C-D-Lewis / dashboard

Repository for the Dashboard Pebble watch and Android apps
MIT License
21 stars 5 forks source link

"Find phone" doesn't use configured sound when triggered from Pebble #11

Open IzzySoft opened 4 years ago

IzzySoft commented 4 years ago

I've tried the "find phone" feature, but my phone only gives a short "tock". So I've picked a sound I found more fitting. Hitting the "test" button in the Android app indeed plays that sound – but when I use that feature from the Pebble, I still only get that "tock" – and a toast saying "no file chosen, or was unavailable". Opening the picker again, the choosen sound is no longer marked – instead "none" is selected.

Android: BQ Aquaris X5 Plus running LineageOS 14.1 (Android 7.1.1), no GApps (but microG)

Pebble: Pebble Time Steel, FW 4.3 (still looking who might have the 4.4 I didn't receive as I never used the official Pebble app)

C-D-Lewis commented 4 years ago

This is possibly related to changes in app vs user storage... Will investigate.

IzzySoft commented 4 years ago

Let me know if I shall test something. I'm also open to using a test APK to verify. In case it helps, here comes the relevant

Logcat
02-11 22:21:08.247 19974  2281 I nodomain.freeyourgadget.gadgetbridge.service.devices.pebble.PebbleProtocol: got APPLICATIONMESSAGE PUSH from UUID : d522bc8e-65f3-4edf-9651-05e1e4567021
02-11 22:21:08.248 19974  2281 I nodomain.freeyourgadget.gadgetbridge.service.devices.pebble.PebbleIoThread: Got AppMessage event
02-11 22:21:08.249 19974  2281 I nodomain.freeyourgadget.gadgetbridge.service.devices.pebble.PebbleKitSupport: broadcasting to uuid d522bc8e-65f3-4edf-9651-05e1e4567021 transaction id: 3 JSON: [{"key":544,"length":4,"type":"int","value":0},{"key":12,"length":4,"type":"int","value":2}]
02-11 22:21:08.276 26697 26697 I background.PebbleReceiver: [11/02 22:21:08.275] [I] [background.PebbleReceiver] Dashboard received Intent with matching UUID.
02-11 22:21:08.278 19974 19974 I nodomain.freeyourgadget.gadgetbridge.service.devices.pebble.PebbleKitSupport: Got action: com.getpebble.action.app.ACK
02-11 22:21:08.281 26697 26697 I background.PebbleReceiver: [11/02 22:21:08.280] [I] [background.PebbleReceiver] startService on version 25
02-11 22:21:08.289 26697 26697 I background.PebbleReceiver: [11/02 22:21:08.288] [I] [background.PebbleReceiver] Dashboard received Intent with matching UUID.
02-11 22:21:08.294 26697 26697 I background.PebbleReceiver: [11/02 22:21:08.293] [I] [background.PebbleReceiver] startService on version 25
02-11 22:21:08.303 26697 26697 I background.HandlerService: [11/02 22:21:08.302] [I] [background.HandlerService] onStartCommand
02-11 22:21:08.307 26697 26697 I background.HandlerService: [11/02 22:21:08.306] [I] [background.HandlerService] Dashboard v4.15 (compatible v4.8)
02-11 22:21:08.311 26697 26697 I background.HandlerService: [11/02 22:21:08.310] [I] [background.HandlerService] Got toggle request
02-11 22:21:08.314 26697 26697 I background.HandlerService: [11/02 22:21:08.314] [I] [background.HandlerService] Toggling find phone...
02-11 22:21:08.320 26697 26697 I background.HandlerService: [11/02 22:21:08.319] [I] [background.HandlerService] onStartCommand finished.
02-11 22:21:08.325 26697 26697 I background.HandlerService: [11/02 22:21:08.325] [I] [background.HandlerService] onStartCommand
02-11 22:21:08.330 26697 26697 I background.HandlerService: [11/02 22:21:08.329] [I] [background.HandlerService] Dashboard v4.15 (compatible v4.8)
02-11 22:21:08.335 26697 26697 I background.HandlerService: [11/02 22:21:08.335] [I] [background.HandlerService] Got toggle request
02-11 22:21:08.339 26697 26697 I background.HandlerService: [11/02 22:21:08.338] [I] [background.HandlerService] Toggling find phone...
02-11 22:21:08.344 26697 26697 I background.HandlerService: [11/02 22:21:08.343] [I] [background.HandlerService] onStartCommand finished.
02-11 22:21:08.348 26697 26697 I background.FindPhone: [11/02 22:21:08.347] [I] [background.FindPhone] FindPhone onStartCommand
02-11 22:21:08.352 26697 26697 I background.FindPhone: [11/02 22:21:08.351] [I] [background.FindPhone] Starting find phone...
02-11 22:21:08.359 26697 26697 I background.FindPhone: [11/02 22:21:08.358] [I] [background.FindPhone] Using loaded Uri: content://media/internal/audio/media/43
02-11 22:21:08.360 26697 26697 E MediaPlayer: stop called in state 1, mPlayer(0x0)
02-11 22:21:08.360 26697 26697 E MediaPlayer: error (-38, 0)
02-11 22:21:08.372  2817  3174 I vol.Events: writeEvent level_changed STREAM_ALARM 7
02-11 22:21:08.389 19974 19974 I nodomain.freeyourgadget.gadgetbridge.service.devices.pebble.PebbleKitSupport: Got action: com.getpebble.action.app.ACK
02-11 22:21:08.400   536  8683 D NuPlayerDriver: notifyListener_l(0xa574d000), (1, 0, 0), loop setting(0, 1)
02-11 22:21:08.403   536 19359 D NuPlayerDriver: start(0xa574d000), state is 4, eos is 0
02-11 22:21:08.404   536  8683 I GenericSource: start
02-11 22:21:08.406 26697 26697 I background.FindPhone: [11/02 22:21:08.406] [I] [background.FindPhone] Sound started.
02-11 22:21:08.409   536  8683 W Utils   : track of type 'audio/vorbis' does not publish channel mask, channel count 1
02-11 22:21:08.413   536  8683 W Utils   : track of type 'audio/vorbis' does not publish channel mask, channel count 1
02-11 22:21:08.416   536  8687 I MediaPlayerService: MediaPlayerService::getOMX
02-11 22:21:08.417   536  8687 I OMXClient: MuxOMX ctor
02-11 22:21:08.417   533   533 I OMXMaster: makeComponentInstance(OMX.google.vorbis.decoder) in mediacodec process
02-11 22:21:08.419 26697 26697 I background.FindPhone: [11/02 22:21:08.419] [I] [background.FindPhone] Sound started.
02-11 22:21:08.421   533  3111 E OMXNodeInstance: setConfig(21505cd:google.vorbis.decoder, ConfigPriority(0x6f800002)) ERROR: Undefined(0x80001001)
02-11 22:21:08.422   536  8687 I ACodec  : codec does not support config priority (err -2147483648)
02-11 22:21:08.424   536  8687 I MediaCodec: MediaCodec will operate in async mode
02-11 22:21:08.425 26697 26697 I background.FindPhone: [11/02 22:21:08.424] [I] [background.FindPhone] FindPhone onStartCommand finished
02-11 22:21:08.430 26697 26697 I background.FindPhone: [11/02 22:21:08.429] [I] [background.FindPhone] FindPhone onStartCommand
02-11 22:21:08.434 26697 26697 I background.FindPhone: [11/02 22:21:08.433] [I] [background.FindPhone] Stopping find phone...
02-11 22:21:08.437   536  2870 D NuPlayerDriver: stop(0xa574d000)
02-11 22:21:08.437   536  2870 D NuPlayerDriver: notifyListener_l(0xa574d000), (8, 0, 0), loop setting(0, 1)
02-11 22:21:08.437  2817  3174 I vol.Events: writeEvent level_changed STREAM_ALARM 6
02-11 22:21:08.437   536 19359 D NuPlayerDriver: reset(0xa574d000) at state 8
02-11 22:21:08.449   536  8683 W AMessage: failed to post message as target looper for handler 0 is gone.
02-11 22:21:08.450   536  8683 D NuPlayerDriver: notifyResetComplete(0xa574d000)
02-11 22:21:08.450   536  2870 D NuPlayerDriver: reset(0xa574d000) at state 0
02-11 22:21:08.467 26697 26697 I background.FindPhone: [11/02 22:21:08.466] [I] [background.FindPhone] FindPhone onStartCommand finished
02-11 22:21:08.505 19974 19974 I nodomain.freeyourgadget.gadgetbridge.externalevents.NotificationListener: Ignore notification
02-11 22:21:08.512 19974 19974 I nodomain.freeyourgadget.gadgetbridge.externalevents.NotificationListener: Ignore notification
02-11 22:21:08.517 19974 19974 I nodomain.freeyourgadget.gadgetbridge.externalevents.NotificationListener: Ignore notification
02-11 22:21:08.517 19974 19974 I nodomain.freeyourgadget.gadgetbridge.service.devices.pebble.PebbleKitSupport: Got action: com.getpebble.action.app.SEND
02-11 22:21:08.518 19974 19974 I nodomain.freeyourgadget.gadgetbridge.service.devices.pebble.PebbleKitSupport: json string: [{"key":12,"type":"int","length":1,"value":2}]
02-11 22:21:08.552 19974  2281 I nodomain.freeyourgadget.gadgetbridge.service.devices.pebble.PebbleProtocol: got APPLICATIONMESSAGE/LAUNCHER (EP 48) ACK
02-11 22:21:08.630 19974 19974 I nodomain.freeyourgadget.gadgetbridge.service.devices.pebble.PebbleKitSupport: broadcasting ACK (transaction id -1)
02-11 22:21:08.632 19974 19974 I nodomain.freeyourgadget.gadgetbridge.service.devices.pebble.PebbleKitSupport: Got action: com.getpebble.action.app.SEND
02-11 22:21:08.633 19974 19974 I nodomain.freeyourgadget.gadgetbridge.service.devices.pebble.PebbleKitSupport: json string: [{"key":12,"type":"int","length":1,"value":1}]
02-11 22:21:08.664 19974  2281 I nodomain.freeyourgadget.gadgetbridge.service.devices.pebble.PebbleProtocol: got APPLICATIONMESSAGE/LAUNCHER (EP 48) ACK
02-11 22:21:08.735 19974 19974 I nodomain.freeyourgadget.gadgetbridge.service.devices.pebble.PebbleKitSupport: broadcasting ACK (transaction id -1)
02-11 22:21:08.737 19974 19974 I nodomain.freeyourgadget.gadgetbridge.externalevents.NotificationListener: Notification removed: com.wordpress.ninedof.dashboard: null
02-11 22:21:08.749   528 27853 I AudioPolicyManagerCustom: FLAG None hence request for a primary output
02-11 22:21:08.751   528 27854 I AudioPolicyManagerCustom: Direct PCM is disabled for this request
02-11 22:21:08.752  2817  3174 D AudioTrack: Client defaulted notificationFrames to 240 for frameCount 960
02-11 22:21:08.766   528   796 D audio_hw_primary: out_set_parameters: enter: usecase(1: low-latency-playback) kvpairs: routing=2
02-11 22:21:08.766   528   796 D audio_hw_extn: audio_extn_set_anc_parameters: anc_enabled:0
02-11 22:21:08.767  2538  2629 W qti_sensors_hal: timestampCalc: Adjusting timestamp for rollover: 3208535404896274, 2
02-11 22:21:08.771   528   796 D audio_hw_primary: start_output_stream: enter: stream(0xa8aa5200)usecase(1: low-latency-playback) devices(0x2)
02-11 22:21:08.771   528   796 D audio_hw_primary: select_devices: out_snd_device(2: speaker) in_snd_device(0: )
02-11 22:21:08.771   528   796 I msm8916_platform: platform_check_and_set_codec_backend_cfg: Usecase bitwidth 16, samplerate 48000, backend_idx 0
02-11 22:21:08.771   528   796 I msm8916_platform: platform_check_codec_backend_cfg Codec selected backend: 0 current bit width: 16 and sample rate: 48000
02-11 22:21:08.771   528   796 D msm8916_platform: platform_check_codec_backend_cfg: resetting sample_rate back to default, backend_idx: 0
02-11 22:21:08.771   528   796 I msm8916_platform: platform_check_codec_backend_cfg Codec selected backend: 0 updated bit width: 16 and sample rate: 48000
02-11 22:21:08.771   528   796 D hardware_info: hw_info_append_hw_type : device_name = speaker
02-11 22:21:08.771   528   796 D audio_hw_primary: enable_snd_device: snd_device(2: speaker)
02-11 22:21:08.771   528   796 I audio_hw_primary: select_devices Selected apptype: 69937
02-11 22:21:08.772   528   796 I audio_hw_utils: audio_extn_utils_send_app_type_cfg app_type 69937, acdb_dev_id 14, sample_rate 48000
02-11 22:21:08.772   528   796 D ACDB-LOADER: ACDB -> send_audio_cal, acdb_id = 14, path =  0
02-11 22:21:08.772   528   796 D ACDB-LOADER: ACDB -> send_asm_topology
02-11 22:21:08.772   528   796 D ACDB-LOADER: ACDB -> ACDB_CMD_GET_AUDPROC_STREAM_TOPOLOGY_ID
02-11 22:21:08.772   528   796 D ACDB-LOADER: ACDB -> send_adm_topology
02-11 22:21:08.772   528   796 D ACDB-LOADER: ACDB -> ACDB_CMD_GET_AUDPROC_COMMON_TOPOLOGY_ID
02-11 22:21:08.772   528   796 D ACDB-LOADER: ACDB -> send_audtable
02-11 22:21:08.772   528   796 D ACDB-LOADER: ACDB -> ACDB_CMD_GET_AUDPROC_COMMON_TABLE_SIZE
02-11 22:21:08.772   528   796 D ACDB-LOADER: ACDB -> ACDB_CMD_GET_AUDPROC_COMMON_TABLE
02-11 22:21:08.772   528   796 D ACDB-LOADER: ACDB -> AUDIO_SET_AUDPROC_CAL
02-11 22:21:08.772   528   796 D ACDB-LOADER: ACDB -> send_audvoltable
02-11 22:21:08.772   528   796 D ACDB-LOADER: ACDB -> ACDB_CMD_GET_AUDPROC_GAIN_DEP_STEP_TABLE
02-11 22:21:08.772   528   796 D ACDB-LOADER: ACDB -> AUDIO_SET_AUDPROC_VOL_CAL
02-11 22:21:08.772   528   796 D ACDB-LOADER: ACDB -> send_audstrmtable
02-11 22:21:08.772   528   796 D ACDB-LOADER: ACDB -> ACDB_CMD_GET_AUDPROC_STREAM_TABLE_V2
02-11 22:21:08.772   528   796 D ACDB-LOADER: ACDB -> audstrm_cal->cal_type.cal_data.cal_size = 32
02-11 22:21:08.772   528   796 D ACDB-LOADER: ACDB -> send_afe_topology
02-11 22:21:08.772   528   796 D ACDB-LOADER: ACDB -> ACDB_CMD_GET_AFE_TOPOLOGY_ID
02-11 22:21:08.772   528   796 D ACDB-LOADER: ACDB -> GET_AFE_TOPOLOGY_ID for adcd_id 14, Topology Id 1025e
02-11 22:21:08.772   528   796 D ACDB-LOADER: ACDB -> send_afe_cal
02-11 22:21:08.772   528   796 D ACDB-LOADER: ACDB -> ACDB_CMD_GET_AFE_COMMON_TABLE
02-11 22:21:08.772   528   796 D ACDB-LOADER: ACDB -> AUDIO_SET_AFE_CAL
02-11 22:21:08.772   528   796 D ACDB-LOADER: ACDB -> send_hw_delay : acdb_id = 14 path = 0
02-11 22:21:08.772   528   796 D ACDB-LOADER: ACDB -> ACDB_AVSYNC_INFO: ACDB_CMD_GET_DEVICE_PROPERTY
02-11 22:21:08.772   528   796 D audio_hw_primary: enable_audio_route: apply mixer and update path: low-latency-playback smpa
02-11 22:21:08.773   528   796 D audio_hw_primary: select_devices: done
02-11 22:21:08.780   528   796 D msm8916_platform: platform_set_channel_map mixer_ctl_name:Playback Channel Map12
02-11 22:21:08.780   528   796 D msm8916_platform: platform_set_channel_map: set mapping(1 2 0 0 0 0 0 0) for channel:2
02-11 22:21:08.806  2538  2629 W qti_sensors_hal: timestampCalc: Adjusting timestamp for rollover: 3208535444721714, 2
02-11 22:21:08.806   528   796 D audio_hw_primary: start_output_stream: exit
ghost commented 4 years ago

Now I've got it working I can report that a custom sound is working perfectly for me, both from the test button and the pebble watch app. Gadgetbridge on Android 10 also with no GApps and microG instead.

FYI @IzzySoft I believe that firmware 4.4 is just a modified version of 4.3 to fix Rebble dictation on iOS, and therefore irrevalent to Android GadgetBridge users (I assume why GB doesn't host a copy of it).

IzzySoft commented 4 years ago

Now I've got it working

Cool, looking forward to the APK!

As for 4.4: Yes, it's just a modified 4.3. But it's also said to remove analytics and thus save juice (something like 10% more run-time with one charge). And no, GB has no copy of it but also wants it (I've got direct contact to the team; actually it was them telling me about 4.4 and asking whether I'd know a source).

ghost commented 4 years ago

As for 4.4: Yes, it's just a modified 4.3. But it's also said to remove analytics and thus save juice (something like 10% more run-time with one charge). And no, GB has no copy of it but also wants it (I've got direct contact to the team; actually it was them telling me about 4.4 and asking whether I'd know a source).

Found this curious so I did a bit of digging and found a copy for you, http://nyus.joshuawise.com/Pebble-4.4.0-rbl-snowy_s3.pbz. Please pass it on to the GB team.

You can switch out the codename in the URL to match that of the device you want the firmware for (silk, snowy_dvt, snowy_s3, spalding).

IzzySoft commented 4 years ago

That's mega cool, thanks! Forwarded it right away (and downloaded it myself; needed to revert to "http", though – ah, I see you had the same issue :smile:).

PS: GB Team gives their whole-heated thanks! Tested on one of their Pebbles, and now running on mine, too. Guess it's fine to include the link with the GB Wiki?

ghost commented 4 years ago

Guess it's fine to include the link with the GB Wiki?

I'm not the one hosting it, I found it using a combination of AdAway (to log the domain while downloading it via the official pebble app) and searching through the rebble discord server (where it was posted by an official rebble contributor a while ago, confirming it is legit). I assume it is ok to link directly to it (I can't think of any issue) but if you're concerned you could always host a mirror somewhere or just ask rebble...

IzzySoft commented 4 years ago

Thanks @p4t44 – if they wrote it publically (and without a disclaimer) it should be OK to do the same.

C-D-Lewis commented 4 years ago

My Pixel 2 on Android 10 with latest Dashboard v4.15 doesn't seem to exhibit this problem - I configure a sound and then I can play it later to find my phone elsewhere in the house.

Is this still an issue? If so, I may need more help in debugging.

IzzySoft commented 4 years ago

Yes, issue still exists (with Pebble FW 4.4 now). Have you seen the logcat in this comment? Just click/tap the word "Logcat" there to open the "spoiler" if not. How else can I help with debugging? Anything I should try? Any debug APK I shall use?

ghost commented 4 years ago

After switching to a new custom ROM (for entirely unrelated reasons) I had the same issue, my chosen custom sound wouldn't play. I solved it by manually granting Dashboard the "storage" permission which it apparently didn't ask for, perhaps that is your issue?

IzzySoft commented 4 years ago

Thanks @p4t44 – I've checked that, and indeed that permission was not granted. I gave it, but the situation remains unchanged – even after force-restarting the app:

LineageOS "Privacy Guard" confirms access to storage (both read and write) are granted and have been used multiple times. No idea what else to check.

C-D-Lewis commented 4 years ago

I will add the storage permission for today's release (I know), and we can continue to debug this.

C-D-Lewis commented 4 years ago

Which exact permission string are you referring to? I already added these ages ago:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
IzzySoft commented 4 years ago

Yes, those. But since MM, apps are expected to ask before using them the first time. So if your app targets MM or higher, the app must do so. That's called "runtime permissions", and you can find details here.

C-D-Lewis commented 4 years ago

Yes, I've been aware of runtime permissions since my other app Wristponder got caught up in the upgrade process too early.

And I've been trying

C-D-Lewis commented 4 years ago

... to avoid them because Dashboard is supposed to operate in the background almost exclusively.

But then again, maybe expecting at least one Android app launch isn't too terrible after all...

IzzySoft commented 4 years ago

Well, how else should the user pick a sound? Or install the watchapp? :smile:

C-D-Lewis commented 4 years ago

I guess they'll have to wait for me to find the time to rework the entire permission flow.

IzzySoft commented 4 years ago

Not pressing, just curious: any news on this?

C-D-Lewis commented 4 years ago

Not yet. It works for all the devices I have, so hard to find what causes the problem for you. I'll try and find time for more investigation soon.

IzzySoft commented 4 years ago

Could "no GApps" play a role here? Plain LineageOS (with microG) on my device. And running via Gadgetbridge (not Pebble/Rebble app; installed from F-Droid of course). Firmware upgraded to 4.4 meanwhile, thanks to the link provided by ghost.

sidevesh commented 4 years ago

Same issue happening for me, triggering Find my phone from watch never plays any sound, Test button works, both when custom sound is set and with default, When the notification sound is set as default, triggering from watch shows a toast saying no sound selected so using default but makes no sound, selecting a custom sound makes it not make any sound as well as no toast.

Have gapps on phone and still facing the issue, so its probably not related to that.