Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何启动广播接收器上的活动_Android_Android Activity_Broadcastreceiver_Android Alarms - Fatal编程技术网

Android 如何启动广播接收器上的活动

Android 如何启动广播接收器上的活动,android,android-activity,broadcastreceiver,android-alarms,Android,Android Activity,Broadcastreceiver,Android Alarms,我目前正在为android开发一个报警应用程序(是的,我知道我不是唯一一个)。我对Android开发还比较陌生,但我已经完成了应用程序的核心部分,我只需要一件事。能够设置闹钟(在x-y-z时间),一旦闹钟响起,即使手机处于睡眠状态也可以启动一项活动(显然没有关机),其余的都完成了 现在我已经阅读了开发者指南,我相信通过广播接收器,然后应该开始启动活动,但我似乎找不到任何例子或类似的帖子,至少可以得到一个想法 现在,我已经让AlarmManager工作了,它实际上是在活动中醒来的,但只有在手机完全

我目前正在为android开发一个报警应用程序(是的,我知道我不是唯一一个)。我对Android开发还比较陌生,但我已经完成了应用程序的核心部分,我只需要一件事。能够设置闹钟(在x-y-z时间),一旦闹钟响起,即使手机处于睡眠状态也可以启动一项活动(显然没有关机),其余的都完成了

现在我已经阅读了开发者指南,我相信通过广播接收器,然后应该开始启动活动,但我似乎找不到任何例子或类似的帖子,至少可以得到一个想法

现在,我已经让AlarmManager工作了,它实际上是在活动中醒来的,但只有在手机完全处于唤醒状态时才工作,而在睡觉时则完全不工作,或者至少在手机解锁之前不会工作

有什么建议吗?如果需要,可以发布代码示例。提前谢谢

更新

@乔尔:谢谢你的回复。我确实读过关于PowerManager.WakeLock的文章,但很高兴你给我指明了方向。现在,这就是我为接待活动提出的建议(可能是错误的,但请容忍我)


现在所有这一切,但它不会醒来,甚至声音,除非手机是积极的(唤醒)。关于如何有效使用唤醒锁,有什么想法吗

我相信您需要的系统服务是
PowerManager.WakeLock
。在google或stack overflow上搜索此项,您可能会得到所需的信息。

最终使唤醒锁工作(在服务上而不是在活动上)。谢谢你的回复,乔尔
public class OnAlarmActivity extends Activity {

    MediaPlayer mpAlarm;
    MediaPlayer mpButton;
    PowerManager.WakeLock wl;

    private BroadcastReceiver theReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
            PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Tag");
            wl.acquire();
        }
    };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.on_alarm);

        mpAlarm = MediaPlayer.create(this, R.raw.filename);
        mpAlarm.start();
        mpButton = MediaPlayer.create(this, R.raw.buttonfilename);


        ImageView imgForAlarmScreen= (ImageView)findViewById(R.id.oftheimage);
        Animation myFadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.fadein);
        imgForAlarmScreen.startAnimation(myFadeInAnimation); //animation for ImageView

        Button bNextActivity = (Button)findViewById(R.id.ofthebutton);
        bNextActivity.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                mpButton.start();
                startActivity(new Intent("com.myapps.otheractivity"));
            }
        });
    }

    @Override
    protected void onStart() {
        // TODO Auto-generated method stub
        super.onStart();
    }

    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        mpAlarm.start();
    }

    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        mpAlarm.pause();
    }

    @Override
    protected void onRestart() {
        // TODO Auto-generated method stub
        super.onRestart();
        mpAlarm.start();
    }

    @Override
    protected void onStop() {
        // TODO Auto-generated method stub
        super.onStop();
        wl.release();
    }

    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        mpAlarm.release();
    }
}