android - 音频线控制MediaPlayer服务

标签 android audio remote-control

我已经编写了一个普通的MediaPlayer,例如APP。现在,我有一副带有嵌入式 Remote 的耳机,用于控制音量,暂停和播放歌曲。
我的想法是以此控制我的MediaPlayer服务。但是我在网上找不到有关我的问题的任何信息。有人可以给我一个提示吗?

最佳答案

我不知道为什么我对我的问题不满意,但是我会为其他面临相同问题的人回答。

public class MediaService extends Service implements
    MediaPlayer.OnPreparedListener, MediaPlayer.OnErrorListener,
    MediaPlayer.OnCompletionListener {


private IntentFilter intentFilterMediaButton = new IntentFilter(Intent.ACTION_MEDIA_BUTTON);
private MediaButtonIntentReceiver mMediaButtonReceiver = new MediaButtonIntentReceiver();

@Override
public void onPrepared(MediaPlayer mediaPlayer) {
    registerReceiver(this.mMediaButtonReceiver, this.intentFilterMediaButton);
    player.start();
}
public static class MediaButtonIntentReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        String intentAction = intent.getAction();
        if (!Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) {
            return;
        }
        KeyEvent event =   (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
        if (event == null) {
            return;
        }
        int action = event.getAction();
        if (action == KeyEvent.ACTION_DOWN) {
            switch (action){
                case 0: // Button down
                    // do something
                    Toast.makeText(context, "BUTTON PRESSED!", Toast.LENGTH_SHORT).show();
                    break;
            }
        }
        abortBroadcast();
    }
}

在主要 Activity 中调用此方法。onCreate()

    AudioManager manager = (AudioManager) getSystemService(AUDIO_SERVICE);
    if (manager != null) {
        manager.registerMediaButtonEventReceiver(new ComponentName(getPackageName(), MediaService.MediaButtonIntentReceiver.class.getName()));
    }


并将其放入 list
    <receiver android:name="MediaService$MediaButtonIntentReceiver" android:enabled="true">
        <intent-filter android:priority="1000000000">
            <action android:name="android.intent.action.MEDIA_BUTTON" />
        </intent-filter>
    </receiver>

关于android - 音频线控制MediaPlayer服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47246233/

相关文章:

android - Firebase - 如何一次删除多个条目?

android - GCM/Firebase 推送通知可以用 Charles 之类的代理软件拦截吗?

xcode - Swift 2.0 中的远程控制 (MPNowPlayingInfoCenter)

java - 在 Asynctask 的 onPostExecute 中获取空对象引用?

android - 在 Kotlin 中将 ArrayList 转换为字符串的最佳方法

javascript - 在网络服务器中发送实时语音或声音

python - Python Wave音频采样率

.net - .NET 中的录音有一些特定要求

C RbPi UART 远程控制 socket

ios - MPRemoteCommandCenter 事件处理程序从未触发