gpt4 book ai didi

android - 在android中按下电源按钮播放声音

转载 作者:搜寻专家 更新时间:2023-11-01 09:36:27 26 4
gpt4 key购买 nike

我正在开发一个应用程序,其中“当我的应用程序正在运行并且用户按下电源按钮”以锁定手机,然后在锁定之前它应该播放声音。

我已经在以下链接上搜索了如何在 SO 上执行此操作,但没有找到任何可行的解决方案: Want to Access Power Button events in android

Disable Screen Lock(Power) Button in Android

Override Power button just like Home button

How to hook into the Power button in Android?

我不想在长按电源按钮的情况下工作。我只想在应用程序/Activity 运行时播放我自己的音乐并且用户按下电源按钮锁定手机。

这是我到目前为止所做的代码:

AndroidManifest.xml

<uses-permission android:name="android.permission.PREVENT_POWER_KEY" />

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

</application>

MainActivity.java

package com.example.lockunlocksound;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.KeyEvent;

public class MainActivity extends Activity {

static MediaPlayer mp;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}


@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

if (keyCode == KeyEvent.KEYCODE_POWER) {
// Do something here...
mp= MediaPlayer.create(this, R.raw.click123);
mp.start();
return true;
}

return super.onKeyDown(keyCode, event);
}
}

我上面提到的一些帖子声称可以解决这个问题,但我没有得到想要的输出。我哪里错了?我的手机只是在没有播放声音的情况下被锁定。建议我应该如何继续才能解决这个问题?

最佳答案

要实现这一点,您可以创建在用户按下电源按钮时触发的接收器,并在该接收器被触发时播放音乐:

public class MyBroadCastReciever extends BroadcastReceiver {

MediaPlayer mediaPlayer = null;

@Override
public void onReceive(Context context, Intent intent) {
mediaPlayer = MediaPlayer.create(context, R.raw.click123);
mediaPlayer.start();
}
}

实例化一个接收器并在您的 MainActivity 的 onCreate 中注册它:

MyBroadCastReciever myBroadCastReciever = new MyBroadCastReciever();
IntentFilter screenStateFilter = new IntentFilter();
screenStateFilter.addAction(Intent.ACTION_SCREEN_OFF);
registerReceiver(myBroadCastReciever, screenStateFilter);

并且不要忘记在 MainActivity 的 onDestroy 中注销它:

unregisterReceiver(myBroadCastReciever);

关于android - 在android中按下电源按钮播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42778934/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com