Определить мое приложение в качестве музыкального сервиса Google Ассистента по умолчанию

Я разрабатываю приложение Android Music Player. Я хотел бы интегрировать его с Google Assistant, чтобы управлять воспроизведением и искать песни голосом. Я уже реализовал сеанс мультимедиа в своем приложении в соответствии с инструкциями из официальная документация.

Когда я запрашиваю у Ассистента воспроизвести что-нибудь в моем приложении, я должен сказать что-то вроде «Воспроизвести какого-нибудь исполнителя в MyApp». Когда я говорю "Воспроизвести какого-нибудь исполнителя", Ассистент говорит мне, что я не настроил поставщика музыки по умолчанию.

Это приводит меня к следующему экрану в приложении Google Assistant:

введите здесь описание изображения

Обратите внимание, что MyApp не указан в списке "Ваши музыкальные сервисы". Мой вопрос заключается в следующем: что мне нужно изменить в моем приложении, чтобы его можно было выбрать в качестве музыкального сервиса по умолчанию?

К вашему сведению, вот файл манифеста:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="fr.nihilus.music">

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />

    <uses-feature
        android:name="android.hardware.audio.output"
        android:required="true" />

    <application
        android:name=".NihilusMusicApplication"
        android:allowBackup="true"
        android:fullBackupContent="@xml/backup"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        tools:ignore="GoogleAppIndexingWarning">

        <!-- Main activity for music browsing. -->
        <activity
            android:name=".HomeActivity"
            android:launchMode="singleTop"
            android:theme="@style/AppTheme.NoActionBar">

            <!-- Make this Activity visible in launcher -->
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <!-- Make this activity available as the default music app. -->
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.APP_MUSIC" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>

            <!-- Intent filter that enables voice searches, such as "Play the Beatles" -->
            <intent-filter>
                <action android:name="android.media.action.MEDIA_PLAY_FROM_SEARCH" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>

            <meta-data
                android:name="android.app.default_searchable"
                android:value=".ui.SearchResultActivity" />
            <meta-data
                android:name="android.app.shortcuts"
                android:resource="@xml/shortcuts" />
        </activity>

        <!-- Activity showing detail and tracks of an album. -->
        <activity
            android:name=".ui.albums.AlbumDetailActivity"
            android:parentActivityName=".HomeActivity"
            android:theme="@style/AppTheme.NoActionBar" />

        <!-- Activity for toggling user preferences. -->
        <activity
            android:name=".settings.SettingsActivity"
            android:label="@string/action_settings"
            android:parentActivityName=".HomeActivity" />

        <!--
            Activity to be opened as a dialog window when a track is selected
            from the file explorer.
         -->
        <activity android:name=".FileViewerActivity"
            android:theme="@style/AppTheme.FileViewer"
            android:excludeFromRecents="true">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />

                <data
                    android:mimeType="audio/*"
                    android:scheme="content" />
            </intent-filter>
        </activity>

        <!--
            Main music service, provides media browsing and media playback services to
            consumers through MediaBrowserService and MediaSession. Consumers connect to it through
            MediaBrowser (for browsing) and MediaController (for play session control)
        -->
        <service
            android:name=".service.MusicService"
            android:exported="true"
            android:label="@string/playback_service_label"
            android:process=":musicplayer"
            tools:ignore="ExportedService">
            <intent-filter>
                <action android:name="android.media.browse.MediaBrowserService" />
            </intent-filter>
        </service>

        <!--
            A receiver that will receive media buttons and send as intents to MusicService.
            Required on pre-Lollipop.
        -->
        <receiver android:name="android.support.v4.media.session.MediaButtonReceiver">
            <intent-filter>
                <action android:name="android.intent.action.MEDIA_BUTTON" />
            </intent-filter>
        </receiver>
    </application>

</manifest>

person Thibault Seisel    schedule 24.12.2017    source источник
comment
Эй, тебе повезло с этим? Я на том же пути, что и ты.   -  person Fabio    schedule 31.10.2019
comment
@Fabio Поскольку мое приложение предназначено только для воспроизведения локальных мультимедиа, я не связывался с Google, чтобы включить его в качестве поставщика музыки, поэтому оно не указано в списке. Но вы по-прежнему можете попросить Ассистента выполнить поиск контента в вашем приложении с помощью следующего запроса: play foo on myapp. Я заметил, что вам не нужно указывать имя приложения, если его MediaSession был последним активным сеансом. Скажи мне, работает ли это для тебя.   -  person Thibault Seisel    schedule 31.10.2019
comment
даже с этой фразой он не работает. Где вы определяете myapp, это android:label="myapp" в манифесте? Также вам нужно было настроить глубокие ссылки?   -  person Fabio    schedule 01.11.2019
comment
Я также изо всех сил пытался сообщить Ассистенту о моем приложении. Кажется, что Assistant не распознает отладочные apk, вы должны опубликовать его в Google Play (возможно, достаточно его подписи). Имя приложения определяется как android:label узла <application> манифеста. Вы также должны определить экспортируемый <service> фильтр намерений android.media.browse.MediaBrowserService.   -  person Thibault Seisel    schedule 01.11.2019
comment
У кого-нибудь из вас есть подтверждение, что Помощник работает только с опубликованным приложением? @ Фабио, Тибо. я не могу заставить свое приложение работать с помощником с отладкой и подписанным apk.   -  person Salah Hammouda    schedule 08.04.2020


Ответы (1)


Помощник Google на данный момент разрешает определенные партнерские приложения в списке. Для партнера я не уверен, что именно вы делаете. Если вы работаете в одной из крупных музыкальных компаний, у вас, вероятно, уже есть представитель Google Business Development, который сможет связать вас с нужными людьми.

Если вы еще не связались с Google каким-либо образом, на этой странице есть различные варианты связи: https://developers.google.com/actions/ в разделе "Получите необходимую поддержку с первого дня". Я бы попробовал один или несколько из них, что, надеюсь, приведет вас к нужной команде.

person Nick Fortescue    schedule 24.12.2017