zoukankan      html  css  js  c++  java
  • 耳机 线控 控制播放

    package com.music.you.tube.receiver;
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.view.KeyEvent;
    
    import com.music.you.tube.player.PlayService;
    import com.music.you.tube.util.Actions;
    
    /**
     * 耳机线控
     */
    public class RemoteControlReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            KeyEvent event = intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
            if (event == null || event.getAction() != KeyEvent.ACTION_UP) {
                return;
            }
            Intent serviceIntent;
            switch (event.getKeyCode()) {
                case KeyEvent.KEYCODE_MEDIA_PLAY:
                case KeyEvent.KEYCODE_MEDIA_PAUSE:
                case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
                case KeyEvent.KEYCODE_HEADSETHOOK:
                    serviceIntent = new Intent(context, PlayService.class);
                    serviceIntent.setAction(Actions.ACTION_MEDIA_PLAY_PAUSE);
                    context.startService(serviceIntent);
                    break;
                case KeyEvent.KEYCODE_MEDIA_NEXT:
                    serviceIntent = new Intent(context, PlayService.class);
                    serviceIntent.setAction(Actions.ACTION_MEDIA_NEXT);
                    context.startService(serviceIntent);
                    break;
                case KeyEvent.KEYCODE_MEDIA_PREVIOUS:
                    serviceIntent = new Intent(context, PlayService.class);
                    serviceIntent.setAction(Actions.ACTION_MEDIA_PREVIOUS);
                    context.startService(serviceIntent);
                    break;
            }
        }
    }
    <receiver android:name="com.music.you.tube.receiver.RemoteControlReceiver">
                <intent-filter>
                    <action android:name="android.intent.action.MEDIA_BUTTON" />
                </intent-filter>
            </receiver>
    package com.music.you.tube.util;
    
    /**
     * Actions
     */
    public class Actions {
        public static final String ACTION_MEDIA_PLAY_PAUSE = "podcast.music.ACTION_MEDIA_PLAY_PAUSE";
        public static final String ACTION_MEDIA_HEADSET = "podcast.music.ACTION_MEDIA_HEADSET";
        public static final String ACTION_MEDIA_NEXT = "podcast.music.ACTION_MEDIA_NEXT";
        public static final String ACTION_MEDIA_PREVIOUS = "podcast.music.ACTION_MEDIA_PREVIOUS";
        public static final String VOLUME_CHANGED_ACTION = "android.media.VOLUME_CHANGED_ACTION";
    }
    //实例    : 注册和接收广播在service中   也可以在activity中
    
    
     private ComponentName mRemoteReceiver;
    
    
    
    
    mAudioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
            mRemoteReceiver = new ComponentName(getPackageName(), RemoteControlReceiver.class.getName());
            mAudioManager.registerMediaButtonEventReceiver(mRemoteReceiver);
    
    
    
    
    @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
            if (intent == null || intent.getAction() == null) {
                return START_NOT_STICKY;
            }
            switch (intent.getAction()) {
                case Actions.ACTION_MEDIA_HEADSET:
                    if (getCurrentState() == YoutubePlayerView.STATE.PLAYING) {
                        pause();
                    }
                    break;
                case Actions.ACTION_MEDIA_PLAY_PAUSE:
                    if (getCurrentState() == YoutubePlayerView.STATE.PLAYING) {
                        pause();
                    } else if (getCurrentState() == YoutubePlayerView.STATE.PAUSED) {
                        play();
                    } else if (getCurrentState() == YoutubePlayerView.STATE.BUFFERING) {
                        stop();
                    } else if (getCurrentState() == YoutubePlayerView.STATE.CUED) {
                        stop();
                    } else if (getCurrentState() == YoutubePlayerView.STATE.ENDED) {
                        pause();
                    } else if (getCurrentState() == YoutubePlayerView.STATE.NONE) {
                        stop();
                    } else if (getCurrentState() == YoutubePlayerView.STATE.UNSTARTED) {
                        stop();
                    }
                    break;
                case Actions.ACTION_MEDIA_NEXT:
                    next();
                    break;
                case Actions.ACTION_MEDIA_PREVIOUS:
                    prev();
                    break;
            }
            return START_NOT_STICKY;
        }
            mAudioManager.unregisterMediaButtonEventReceiver(mRemoteReceiver);
  • 相关阅读:
    从MVC和三层架构说到ssh整合开发-下
    Codeforces Round #226 (Div. 2)--A Bear and Raspberry
    ISA95的抽象惯例
    Difference between End-to-end testing and System testing
    javascript Date format(js日期格式化)
    给easyui datebox扩展一个清空按钮
    easyui combobox开启搜索自动完成功能
    给你的webstorm添加快速生成注释得快捷键
    location.origin兼容IE
    将json转换成struts参数
  • 原文地址:https://www.cnblogs.com/qianyukun/p/6735079.html
Copyright © 2011-2022 走看看