Я реализовал MediaBrowserServiceCompat в своем сервисе, а также переопределил метод обратного вызова onSearch. В имплантации PlaybackPreparer моего MediaSession Compat я также добавил флаги PlaybackStateCompat.ACTION_PREPARE_FROM_SEARCH or PlaybackStateCompat.ACTION_PLAY_FROM_SEARCH
. Я также отправляю логический флаг "android.media.browse.SEARCH_SUPPORTED"
как истинный в моем главном BrowserRoot. Мои реализации метода для вышеупомянутого следующие:
override fun getSupportedPrepareActions(): Long =
PlaybackStateCompat.ACTION_PREPARE_FROM_MEDIA_ID or
PlaybackStateCompat.ACTION_PLAY_FROM_MEDIA_ID or
PlaybackStateCompat.ACTION_PREPARE_FROM_SEARCH or
PlaybackStateCompat.ACTION_PLAY_FROM_SEARCH
override fun onPrepareFromSearch(query: String?, playWhenReady: Boolean, extras: Bundle?) {
Timber.d("onPrepareFromSearch: $query")
}
@Override
public void onSearch(@NonNull String query, Bundle extras, @NonNull Result<List<MediaBrowserCompat.MediaItem>> result) {
Timber.d("Search Query: %s", query);
}
Но я не получаю никаких обратных вызовов в обоих этих методах, когда я запускаю поиск через голосовую команду, например Воспроизвести песню имя , я только что получил ответ от помощника: Запрос Имя приложения для воспроизведения Название песни . Что-то пошло не так, попробуйте открыть приложение, чтобы продолжить.