Skip to content

Commit

Permalink
Merge branch 'master' of github.com:home-assistant/android
Browse files Browse the repository at this point in the history
# Conflicts:
#	.github/actions/create-release-notes/action.yml
#	.github/workflows/onPush.yml
#	.github/workflows/pr.yml
#	.github/workflows/weekly.yaml
#	app/src/full/java/io/homeassistant/companion/android/sensors/LocationSensorManager.kt
#	app/src/main/java/io/homeassistant/companion/android/sensors/SensorReceiver.kt
#	gradle/libs.versions.toml
  • Loading branch information
nestor committed Oct 18, 2023
2 parents cd10d5f + 6118933 commit de20adc
Show file tree
Hide file tree
Showing 173 changed files with 3,943 additions and 2,115 deletions.
2 changes: 2 additions & 0 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,8 @@ dependencies {
implementation(libs.iconics.compose)
implementation(libs.community.material.typeface)

implementation(libs.bundles.paging)

implementation(libs.reorderable)
implementation(libs.changeLog)

Expand Down
19 changes: 0 additions & 19 deletions app/src/debug/res/drawable/ic_launcher_foreground.xml

This file was deleted.

5 changes: 3 additions & 2 deletions app/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@android:color/holo_red_dark"/>
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
<background android:drawable="@android:color/holo_red_dark" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
<monochrome android:drawable="@drawable/ic_launcher_monochrome" />
</adaptive-icon>
6 changes: 3 additions & 3 deletions app/src/debug/res/mipmap-anydpi-v26/ic_launcher_round.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@android:color/holo_red_dark"/>
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
<monochrome android:drawable="@drawable/ic_launcher_monochrome" />
<background android:drawable="@android:color/holo_red_dark" />
<foreground android:drawable="@drawable/ic_launcher_foreground_round" />
<monochrome android:drawable="@drawable/ic_launcher_monochrome_round" />
</adaptive-icon>
Binary file removed app/src/debug/res/mipmap-hdpi/ic_launcher.png
Binary file not shown.
Binary file added app/src/debug/res/mipmap-hdpi/ic_launcher.webp
Binary file not shown.
Binary file removed app/src/debug/res/mipmap-hdpi/ic_launcher_round.png
Binary file not shown.
Binary file not shown.
Binary file removed app/src/debug/res/mipmap-mdpi/ic_launcher.png
Binary file not shown.
Binary file added app/src/debug/res/mipmap-mdpi/ic_launcher.webp
Binary file not shown.
Binary file removed app/src/debug/res/mipmap-mdpi/ic_launcher_round.png
Binary file not shown.
Binary file not shown.
Binary file removed app/src/debug/res/mipmap-xhdpi/ic_launcher.png
Binary file not shown.
Binary file added app/src/debug/res/mipmap-xhdpi/ic_launcher.webp
Binary file not shown.
Binary file removed app/src/debug/res/mipmap-xhdpi/ic_launcher_round.png
Binary file not shown.
Binary file not shown.
Binary file removed app/src/debug/res/mipmap-xxhdpi/ic_launcher.png
Binary file not shown.
Binary file added app/src/debug/res/mipmap-xxhdpi/ic_launcher.webp
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file removed app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png
Binary file not shown.
Binary file added app/src/debug/res/mipmap-xxxhdpi/ic_launcher.webp
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import android.content.IntentFilter
import android.content.SharedPreferences
import android.media.AudioManager
import android.net.wifi.WifiManager
import android.nfc.NfcAdapter
import android.os.Build
import android.os.PowerManager
import android.provider.Settings
Expand Down Expand Up @@ -147,6 +148,12 @@ open class HomeAssistantApplication : Application() {
IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED)
)

// Listen for NFC state changes
registerReceiver(
sensorReceiver,
IntentFilter(NfcAdapter.ACTION_ADAPTER_STATE_CHANGED)
)

// Listen to changes to the audio input/output on the device
registerReceiver(
sensorReceiver,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1210,9 +1210,10 @@ class MessagingManager @Inject constructor(
data: Map<String, String>
) {
data[ICON_URL]?.let {
val dataIcon = it.trim().replace(" ", "%20")
val serverId = data[THIS_SERVER_ID]!!.toInt()
val url = UrlUtil.handle(serverManager.getServer(serverId)?.connection?.getUrl(), it)
val bitmap = getImageBitmap(serverId, url, !UrlUtil.isAbsoluteUrl(it))
val url = UrlUtil.handle(serverManager.getServer(serverId)?.connection?.getUrl(), dataIcon)
val bitmap = getImageBitmap(serverId, url, !UrlUtil.isAbsoluteUrl(dataIcon))
if (bitmap != null) {
builder.setLargeIcon(bitmap)
}
Expand All @@ -1224,9 +1225,10 @@ class MessagingManager @Inject constructor(
data: Map<String, String>
) {
data[IMAGE_URL]?.let {
val dataImage = it.trim().replace(" ", "%20")
val serverId = data[THIS_SERVER_ID]!!.toInt()
val url = UrlUtil.handle(serverManager.getServer(serverId)?.connection?.getUrl(), it)
val bitmap = getImageBitmap(serverId, url, !UrlUtil.isAbsoluteUrl(it))
val url = UrlUtil.handle(serverManager.getServer(serverId)?.connection?.getUrl(), dataImage)
val bitmap = getImageBitmap(serverId, url, !UrlUtil.isAbsoluteUrl(dataImage))
if (bitmap != null) {
builder
.setLargeIcon(bitmap)
Expand Down Expand Up @@ -1270,9 +1272,10 @@ class MessagingManager @Inject constructor(
data: Map<String, String>
) {
data[VIDEO_URL]?.let {
val dataVideo = it.trim().replace(" ", "%20")
val serverId = data[THIS_SERVER_ID]!!.toInt()
val url = UrlUtil.handle(serverManager.getServer(serverId)?.connection?.getUrl(), it)
getVideoFrames(serverId, url, !UrlUtil.isAbsoluteUrl(it))?.let { frames ->
val url = UrlUtil.handle(serverManager.getServer(serverId)?.connection?.getUrl(), dataVideo)
getVideoFrames(serverId, url, !UrlUtil.isAbsoluteUrl(dataVideo))?.let { frames ->
Log.d(TAG, "Found ${frames.size} frames for video notification")
RemoteViews(context.packageName, R.layout.view_image_flipper).let { remoteViewFlipper ->
if (frames.isNotEmpty()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import android.content.Context
import android.content.Intent
import android.media.AudioManager
import android.net.wifi.WifiManager
import android.nfc.NfcAdapter
import android.os.Build
import android.os.PowerManager
import androidx.annotation.RequiresApi
Expand All @@ -26,6 +27,7 @@ import io.homeassistant.companion.android.common.sensors.LightSensorManager
import io.homeassistant.companion.android.common.sensors.MobileDataManager
import io.homeassistant.companion.android.common.sensors.NetworkSensorManager
import io.homeassistant.companion.android.common.sensors.NextAlarmManager
import io.homeassistant.companion.android.common.sensors.NfcSensorManager
import io.homeassistant.companion.android.common.sensors.PhoneStateSensorManager
import io.homeassistant.companion.android.common.sensors.PowerSensorManager
import io.homeassistant.companion.android.common.sensors.PressureSensorManager
Expand Down Expand Up @@ -75,6 +77,7 @@ class SensorReceiver : SensorReceiverBase() {
LocationSensorManager(),
MobileDataManager(),
NetworkSensorManager(),
NfcSensorManager(),
NextAlarmManager(),
NotificationSensorManager(),
PhoneStateSensorManager(),
Expand Down Expand Up @@ -116,7 +119,8 @@ class SensorReceiver : SensorReceiverBase() {
AudioManager.RINGER_MODE_CHANGED_ACTION to AudioSensorManager.audioSensor.id,
Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE to DevicePolicyManager.isWorkProfile.id,
Intent.ACTION_MANAGED_PROFILE_AVAILABLE to DevicePolicyManager.isWorkProfile.id,
WifiManager.WIFI_STATE_CHANGED_ACTION to NetworkSensorManager.wifiState.id
WifiManager.WIFI_STATE_CHANGED_ACTION to NetworkSensorManager.wifiState.id,
NfcAdapter.ACTION_ADAPTER_STATE_CHANGED to NfcSensorManager.nfcStateSensor.id
)

override fun getSensorSettingsIntent(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,10 @@ import androidx.fragment.app.commit
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
import dagger.hilt.android.AndroidEntryPoint
import io.homeassistant.companion.android.BuildConfig
import io.homeassistant.companion.android.R
import io.homeassistant.companion.android.common.data.servers.ServerManager
import io.homeassistant.companion.android.settings.developer.location.LocationTrackingFragment
import io.homeassistant.companion.android.settings.log.LogFragment
import io.homeassistant.companion.android.settings.server.ServerChooserFragment
import javax.inject.Inject
Expand Down Expand Up @@ -45,6 +47,17 @@ class DeveloperSettingsFragment : DeveloperSettingsView, PreferenceFragmentCompa
return@setOnPreferenceClickListener true
}

findPreference<Preference>("location_tracking")?.let {
it.isVisible = BuildConfig.FLAVOR == "full"
it.setOnPreferenceClickListener {
parentFragmentManager.commit {
replace(R.id.content, LocationTrackingFragment::class.java, null)
addToBackStack(getString(io.homeassistant.companion.android.common.R.string.location_tracking))
}
return@setOnPreferenceClickListener true
}
}

findPreference<Preference>("thread_debug")?.let {
it.isVisible = presenter.appSupportsThread()
it.setOnPreferenceClickListener {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
package io.homeassistant.companion.android.settings.developer.location

import android.content.Intent
import android.os.Bundle
import android.view.LayoutInflater
import android.view.Menu
import android.view.MenuInflater
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import androidx.compose.ui.platform.ComposeView
import androidx.core.net.toUri
import androidx.core.view.MenuHost
import androidx.core.view.MenuProvider
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.lifecycle.Lifecycle
import com.google.accompanist.themeadapter.material.MdcTheme
import dagger.hilt.android.AndroidEntryPoint
import io.homeassistant.companion.android.R
import io.homeassistant.companion.android.common.data.servers.ServerManager
import io.homeassistant.companion.android.settings.developer.location.views.LocationTrackingView
import javax.inject.Inject
import io.homeassistant.companion.android.common.R as commonR

@AndroidEntryPoint
class LocationTrackingFragment : Fragment() {

@Inject
lateinit var serverManager: ServerManager

val viewModel: LocationTrackingViewModel by viewModels()

override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
return ComposeView(requireContext()).apply {
setContent {
MdcTheme {
LocationTrackingView(
useHistory = viewModel.historyEnabled,
onSetHistory = viewModel::enableHistory,
history = viewModel.historyPagerFlow,
serversList = serverManager.defaultServers
)
}
}
}
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

val menuHost: MenuHost = requireActivity()
menuHost.addMenuProvider(
object : MenuProvider {
override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) {
menuInflater.inflate(R.menu.menu_fragment_locationtracking, menu)
}

override fun onPrepareMenu(menu: Menu) {
menu.findItem(R.id.get_help).apply {
intent = Intent(Intent.ACTION_VIEW, "https://companion.home-assistant.io/docs/troubleshooting/faqs#device-tracker-is-not-updating-in-android-app".toUri())
}
}

override fun onMenuItemSelected(menuItem: MenuItem): Boolean = when (menuItem.itemId) {
R.id.history_all, R.id.history_sent, R.id.history_skipped, R.id.history_failed -> {
viewModel.setHistoryFilter(menuItem.itemId)
menuItem.isChecked = true
true
}
else -> false
}
},
viewLifecycleOwner,
Lifecycle.State.RESUMED
)
}

override fun onResume() {
super.onResume()
activity?.title = getString(commonR.string.location_tracking)
}
}
Loading

0 comments on commit de20adc

Please sign in to comment.