Java Can';t使蓝牙媒体按钮在主活动中工作
我知道android MediaPlayer有一个蓝牙媒体按钮的实现,但是我在服务中使用了MediaPlayer。通过按下启动和停止按钮,从主活动(也控制GUI)启动和停止服务 这是我的主要活动。我将尝试只为这个问题添加所需的代码,因为我的主要活动相当大Java Can';t使蓝牙媒体按钮在主活动中工作,java,android,bluetooth,Java,Android,Bluetooth,我知道android MediaPlayer有一个蓝牙媒体按钮的实现,但是我在服务中使用了MediaPlayer。通过按下启动和停止按钮,从主活动(也控制GUI)启动和停止服务 这是我的主要活动。我将尝试只为这个问题添加所需的代码,因为我的主要活动相当大 public class homepage extends AppCompatActivity implements OnClickListener { @Override public void onCreate(Bundle
public class homepage extends AppCompatActivity implements OnClickListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initializeUIElements();
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
final PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "WakeLock:Acquire");
wakeLock.acquire(10 * 60 * 1000 L);
Timer wakeLockTimer = new Timer();
wakeLockTimer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
if (wakeLock.isHeld()) {
wakeLock.release();
if (!wakeLock.isHeld()) {
wakeLock.acquire(10 * 60 * 1000 L);
}
}
}
}, 0, 10 * 60 * 1000);
}
//Headphone button.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
return super.onKeyDown(keyCode, event);
}
switch (keyCode) {
case KeyEvent.KEYCODE_MEDIA_PLAY:
if (!mRunning) {
buttonPlayAction();
return true;
}
break;
case KeyEvent.KEYCODE_MEDIA_STOP:
if (mRunning) {
stopPlaying();
return true;
}
break;
case KeyEvent.KEYCODE_MEDIA_PAUSE:
if (mRunning) {
stopPlaying();
return true;
}
break;
case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
if (!mRunning) {
buttonPlayAction();
return true;
} else {
stopPlaying();
return true;
}
}
return super.onKeyDown(keyCode, event);
}
}
我正在尝试使用buttonlayaction()
这是播放按钮和stopPlaying()代码>这是通过蓝牙媒体按钮的停止按钮。这两个按钮启动和停止MediaPlayer服务,因此我必须在这里执行,而不是在服务内部执行。MediaPlayer必须位于服务内部,以便在后台运行,但我必须从主活动内部控制启动和停止按钮,因为一旦按下按钮,我需要更改按钮的行为,而这是服务本身无法做到的
问题是,它不起作用。我的应用程序使用API 21和更新版本,因此它是媒体按钮的更新版本。我知道在API 21之前,实现是不同的。我在网上查找的所有内容都指向旧的实现。我是根据官方信息自己做的
我错过了什么吗?我还设置了互联网(因为这是一个互联网广播流的应用程序)、蓝牙和唤醒锁的用户权限