private void setAlert(int time){
final int t = time;
AlertDialog.Builder alt_bid = new AlertDialog.Builder(getActivity());
alt_bid.setMessage("Do you want to set a Timer?").setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
new ProcessSetAlarmTask()
.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, t);
Toast.makeText(getActivity(), ""+t, Toast.LENGTH_SHORT).show();
}
}).setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getActivity(), "Cancel", Toast.LENGTH_SHORT).show();
dialog.cancel();
}
});
AlertDialog alert = alt_bid.create();
alert.setTitle("Title");
alert.show();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_min1:
setAlert(5);
break;
case R.id.btn_7:
setAlert(10);
break;
default :
Toast.makeText(getActivity(), "Error!", Toast.LENGTH_SHORT).show();
break;
}
}
private class ProcessSetAlarmTask extends AsyncTask<Integer, Void, Void> {
@Override
protected Void doInBackground(Integer... params) {
int timer = params[0];
boolean resultProc = setAlarm(timer);
Looper.prepare();
if (resultProc == true) {
pHandler.sendEmptyMessage(0);
} else {
pHandler.sendEmptyMessage(1);
}
return null;
}
}
private boolean setAlarm(int params) {
try {
AlarmManager alarm = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
// 아래는 리시버에서 호출할 이름을 지정
Intent intent = new Intent("com.example.small");
PendingIntent pender = PendingIntent.getBroadcast(getActivity(), 0, intent, 0);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, params);
alarm.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pender);
return true;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
Handler pHandler = new Handler() {
public void handleMessage(Message msg) {
if (msg.what == 0) { // 알람 설정 성공
} else if (msg.what == 1) { // 알람 설정 실패
}
}
};
안녕하세요 와왕초보개발자입니다.
다름이 아니라 멀티 타이머 앱을 구현하고 있는데요
AsyncTask를 이용해서 제 시간에 맞추어 푸쉬알림을 받는 앱입니다.
그런데 리시버를 이용 푸쉬 알림을 AsyncTask로 구현을 하는데 하나의 알림을 설정하고(예를 들어 5초 뒤)
또 다른 알림을 설정하면(10초 뒤) 두번째 걸로 리셋되어 알림이 한번만 울립니다 ㅠㅠ
저는 따로 쓰레드를 돌려 두번의 알림이 나오게 해보고 싶은데 말이죠 ㅠㅠ
많이 찾아 봤는데 해답이 나오지 않습니다 ㅠㅠ 제발 도와주세요~~
허접하지만 코드 첨부 합니당~