每次用户按下电源时播放声音(用户从睡眠状态恢复移动电话)

时间:2013-02-20 14:38:54

标签: android broadcastreceiver

我正在尝试编写一个代码,每当用户按下电源按钮并将手机从睡眠状态恢复时,如果应用程序正在运行,它应播放声音,否则没有任何反应。

我想我需要一个广播接收器来检查电源:按下ON而不是电源:关闭并播放声音。稍后将与异步任务相关联。

我如何达到上述要求。请给我一些方法。
我不想使用服务,因为即使应用程序没有运行它也会继续运行。

我希望它只在应用程序在后台运行时运行,因此BroadCast Receiver。

我是安卓机器人  请帮助。
在此先感谢。

import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class MainActivity extends Activity {


    MediaPlayer mp3;

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

        mp3=MediaPlayer.create(this, R.raw.sound);


    }






    public class YourReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context arg0, Intent arg1) {
            // do what you want when the screen is turned back on

            mp3.start();
        }
    }

}

1 个答案:

答案 0 :(得分:1)

您可以在清单文件中注册BroadcastReceiver,以便在按下电源按钮时进行监听。这将告诉系统您有一个名为your.package.YourReceiver的班级,当按下电源按钮以打开屏幕 时,他想要做某事。

<receiver android:name="your.package.YourReceiver">
    <intent-filter>
        <action android:name="android.intent.action.SCREEN_ON"></action>
    </intent-filter>
</receiver>

然后你必须创建一个类来处理事件。这是收到广播时将运行的代码。

public class YourReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context arg0, Intent arg1) {
        // do what you want when the screen is turned back on
    }
}

注意...

如果您需要按下电源按钮,可以将屏幕关闭,请在清单中使用此按钮。

<action android:name="android.intent.action.SCREEN_OFF"></action>

您可以使用其中一个或两个。