我正在尝试构建一个可用作闹钟的应用程序。我在AlarmManager的帮助下实现了一切,它工作正常。但我有一个问题,当闹铃响起时,它启动一个活动,显示一个带按钮的屏幕并播放声音。但它只显示黑屏并振动+播放声音,然后显示警报屏幕。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.wecker);
laufen = true;
mp = MediaPlayer.create(getApplicationContext(), R.raw.ton);
verstanden =(Button)findViewById(R.id.button1);
verstanden.setOnClickListener(new View.OnClickListener() {public void onClick(View view)
{
finish();
}
});
for (int i=0; i<10;i++)
{
mp.start();
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
v.vibrate(1000);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
如何显示活动并同时播放声音?
答案 0 :(得分:1)
Thread.sleep(1000);
阻止你的UI线程,黑屏就会显示出来。
使用此:
new Thread( new Runnable() {
public void run() {
try {
// Add loop to play music and vibrate here
} catch (InterruptedException ie) {}
}
) }.start();
答案 1 :(得分:0)
您已将Thread.sleep(1000);
放在UI线程上的onCreate()
方法中。您的活动的用户界面仅显示在onResume()
之后的onCreate()
,因此在您的睡眠命令完成之前它不会到达那里。您需要创建一个新的Thread
并在Thread
上运行振动器/睡眠周期。用法显示在Shivam Verma的答案中。