一、AndroidManifest.xml 配置:
<activity-alias
android:name="包名"
android:icon="@mipmap/ic_launcher"
android:label="测试语音"
android:targetActivity="调起界面">
<intent-filter>
<action android:name="android.intent.action.ASSIST" />
<action android:name="android.intent.action.VOICE_COMMAND" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.VOICE_LAUNCH" />
</intent-filter>
</activity-alias>
二、配置广播
<receiver android:name=".MediaButtonReceiver">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
<action android:name="android.media.AUDIO.BECOMING_NOISY" />
</intent-filter>
</receiver>
三、广播
public class MediaButtonReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) {
KeyEvent keyEvent = intent.getParcelableExtra("android.intent.extra.KEY_EVENT");
if (keyEvent != null) {
LogUtil.i("keyEvent _ keyevent --> :" + keyEvent.toString());
int keyCode = keyEvent.getKeyCode();
LogUtil.i("keyCode __ : " + keyCode);
switch (keyCode) {
case KeyEvent.KEYCODE_MEDIA_PAUSE:
break;
case KeyEvent.KEYCODE_MEDIA_PLAY:
break;
case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
break;
case KeyEvent.KEYCODE_HEADSETHOOK:
break;
}
}
}
}
}
四、注册广播成为唯一(小米不适用)
ComponentName componentName;
AudioManager manager;
@Override
public void onCreate() {
super.onCreate();
manager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
componentName = new ComponentName(getPackageName(), MediaButtonReceiver.class.getName());
manager.registerMediaButtonEventReceiver(componentName);
manager.setBluetoothScoOn(true);
manager.startBluetoothSco();
}
@Override
public void onDestroy() {
manager.setBluetoothScoOn(false);
manager.stopBluetoothSco();
manager.unregisterMediaButtonEventReceiver(componentName);
super.onDestroy();
}