android – 屏幕开/关检测

在这里我试图确定屏幕是否打开但是当按下电源锁定/解锁按钮时它似乎不起作用.应用程序没有错误,但if-else中的代码似乎没有效果.
编辑
现在代码工作(感谢Olgun)但媒体播放器播放并没有停止,每次打开/关闭屏幕都会创建新的媒体播放器对象(多次播放).

SCbroadcaster.java

public class SCbroadcaster extends broadcastReceiver {
    PowerManager pm;
    MediaPlayer mp;
    public static boolean wasScreenOn = true;

    @Override
    public void onReceive(Context arg0,Intent arg1) {
        // Todo Auto-generated method stub
        mp = MediaPlayer.create(arg0,R.raw.gale);
        if (arg1.getAction().equals(Intent.ACTION_SCREEN_ON)) {
                    mp.stop();
            mp.release();
            Toast.makeText(arg0,"oNONONO",Toast.LENGTH_LONG).show();

        } else if (arg1.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            mp.start();
        }

    }

}

MainActivity.java

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
    filter.addAction(Intent.ACTION_SCREEN_ON);
    broadcastReceiver bre = new SCbroadcaster();
    registerReceiver(bre,filter);
}

protected void onPause() {
    super.onPause();
    if (SCbroadcaster.wasScreenOn) {
        System.out.println("SCREEN TURNED OFF");
    } else {

    }
}

protected void onResume() {
    super.onResume();
    if (!SCbroadcaster.wasScreenOn) {

    } else {

    }
}

}

解决方法

Intent.ACTION_SCREEN_OFF和ACTION_SCREEN_ON签出上述广播注册. here你可以找到一个很好的例子.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...