Android - Показать звуковое оповещение - PullRequest
2 голосов
/ 18 октября 2019

Я новичок в программировании Android. Я добился того, что я установил приложение Android Studio и правильно с его помощью работал и воспроизводил аудиофайлы. Но я не могу понять, как сделать так, чтобы это было правильно. Я хочу, чтобы это было похоже на звуковые уведомления от YouTube, Spotify и Amazon Musik. Все они выглядят одинаково, поэтому я думаю, что это что-то встроенное, но я не могу понять, что и как настроить. Заранее спасибо.

1 Ответ

1 голос
/ 18 октября 2019

Создайте намерение с именем настраиваемого действия, как это

  Intent switchIntent = new Intent("com.example.app.ACTION_PLAY");

Затем зарегистрируйте PendingIntent Broadcast приемник

  PendingIntent pendingSwitchIntent = PendingIntent.getBroadcast(this, 100, switchIntent, 0);

Затем установите onClick дляуправление воспроизведением, при необходимости выполните аналогичное настраиваемое действие для других элементов управления.

  notificationView.setOnClickPendingIntent(R.id.btn_play_pause_in_notification, pendingSwitchIntent);

Далее зарегистрируйте настраиваемое действие в AudioPlayerBroadcastReceiver следующим образом

   <receiver android:name="com.example.app.AudioPlayerBroadcastReceiver" >
        <intent-filter>
            <action android:name="com.example.app.ACTION_PLAY" />
        </intent-filter>
    </receiver>

Наконец, когда нажата кнопка воспроизведенияNotification RemoteViews макет, вы получите play action по BroadcastReceiver

public class AudioPlayerBroadcastReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {

    String action = intent.getAction();

    if(action.equalsIgnoreCase("com.example.app.ACTION_PLAY")){
        // do your stuff to play action;
    }
   }
}

Вы также можете установить Custom Action через Intent filter из кода для зарегистрированного Broadcast receiver какэто

    // instance of custom broadcast receiver
    CustomReceiver broadcastReceiver = new CustomReceiver();

    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addCategory(Intent.CATEGORY_DEFAULT);
    // set the custom action
    intentFilter.addAction("com.example.app.ACTION_PLAY");
    // register the receiver
    registerReceiver(broadcastReceiver, intentFilter); 
...