3

我目前正在为 android 开发一个警报应用程序(是的,我知道我不是唯一的)。我对 Android 开发相当陌生,但我已经成功完成了应用程序的核心,我只需要一件事。为了能够设置警报(在 xyz 时间),并且一旦警报响起,即使手机处于睡眠状态(显然没有关闭)也可以开始活动,其余的就完成了。

现在我阅读了开发人员指南,我相信要走的路是通过广播接收器,然后应该通过 intentSender 来启动活动,但我似乎无法在哪里找到任何示例或类似的帖子以至少得到一个想法。

现在我已经让 AlarmManager 工作实际上唤醒了活动,但只有在手机完全唤醒时才会工作,如果睡着了就什么都没有,或者至少直到手机被解锁。

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

更新

@Joel 感谢您的回复。我实际上已经阅读了有关 PowerManager.WakeLock 的信息,但很高兴你将我重定向到它的方式。现在这是我为接收活动提出的(可能是错误的,但请耐心等待)

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();
    }
}

现在所有这一切,但除非手机处于活动状态(唤醒),否则它不会醒来甚至不会发出声音。关于如何有效使用唤醒锁的任何想法?

4

1 回答 1

1

我相信您需要的系统服务是PowerManager.WakeLock. 在谷歌或堆栈溢出上搜索这个,你可能会得到你需要的东西。

于 2011-05-10T12:36:18.700 回答