화면에서 알람을 생성하는 응용 프로그램을 작성하고 있습니다. 매 시간마다 버튼을 누릅니다. AlarmManager, WakeLock 및 알람이 트리거 될 때 전체 화면에서 열리는 윈도우를 정의하는 클래스가 하나 있으며 MainActivity.class에서 시작합니다. 그러나 나는 아무 오류도없고 경보는 단순히 달리지 않을 것이다. 나는 초보자이므로 올바른 방향으로 나를 가리켜주십시오. 내 연구를 해봤지만 코드에 무엇이 잘못되었는지를 간단히 찾을 수 없습니다.WakeLock이있는 AlarmManager가 작동하지 않습니다.
MyAlarmReceiverActivity 코드 :
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "");
mWakeLock.acquire();
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON,
WindowManager.LayoutParams.FLAG_FULLSCREEN |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
setContentView(R.layout.alarm);
Button stopAlarm = (Button) findViewById(R.id.btnStopAlarm);
stopAlarm.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0)
{
mMediaPlayer.stop();
finish();
}
});
playSound(this, getAlarmUri());
}
private void playSound(Context context, Uri alert)
{
mMediaPlayer = new MediaPlayer();
try
{
mMediaPlayer.setDataSource(context, alert);
final AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
if (audioManager.getStreamVolume(AudioManager.STREAM_ALARM)!=0)
{
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);
mMediaPlayer.prepare();
mMediaPlayer.start();
}
}catch (IOException e)
{
Log.i("AlarmReceiver","No audio files are found!");
}
}
private Uri getAlarmUri(){
Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
if (alert == null)
{
alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
if (alert == null)
{
alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
}
}
return alert;
}
protected void onStop()
{
super.onStop();
mWakeLock.release();
}
내 주요 활동에 나는
public void spusteniePripomienok(){
Toast.makeText(this, "Spustil si pripomienky každých "+ interval, Toast.LENGTH_SHORT).show();
Intent intent = new Intent(MainActivity.this, AlarmRecieverActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 2, intent, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager am = (AlarmManager) getSystemService(MainActivity.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 5000, pendingIntent);
}
나는 오늘 시험해보고 도움이되는지 알려 줍시다. – MichalCh
죄송합니다. 내 일을 제대로 할 수 없었어요. ive는 알림 수신자를 변경했습니다. 더 나은 것은 아니지만 코드 작성이 쉽습니다. Meybe 문제는 간단하지만 나는 그걸 가지고 노는 시간이 없다 :) – MichalCh