마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

(질문)AlarmManager를 이용한 알람 시간 설정/예약 확인 방법

0 추천

 

안녕하세요

안드로이드 스튜디오를 공부 중인 초보자입니다.

모르는 부분이 있어 질문을 드립니다.

 

특정한 시간에 알람을 울리는 엡을 개발하고자 합니다.

(시간은 미리 정해져 있습니다)

 

구글 검색을 이용해 알람을- 정확하게는 음악을-울리게 하는 부분까지는 성공했습니다.

 

지금 이해하지 못 하는 부분은 아래의 세 가지입니다.

 

- 알람이 취소되지 않습니다

 

- 실제 모바일 기기의 디폴트 알람을 울리게 하고 싶습니다. 

 

- 모바일 기기의 알람 세팅 시스템에 접근하고 싶습니다.

 

아래는 소스입니다.

 

,<AndroidManafest.xml>에는

<service
    android:name="layout.MyService"
 
서비스 부분이 추기되D어 있습니다.
 
아래는 MainActivity 부분입니다
 
package com.awishgames.myalarm;

(Import 부분 생략)

public class MainActivity extends AppCompatActivity {

private PendingIntent pendingIntent;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

Button buttonStart = (Button) findViewById(R.id.button);
Button buttonEnd = (Button) findViewById(R.id.button2);

buttonStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
Intent myintent = new Intent(getApplicationContext(),MyService.class);
pendingIntent = PendingIntent.getService(MainActivity.this ,0 , myintent,0);
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());

calendar.set(Calendar.HOUR_OF_DAY,18);
calendar.set(Calendar.MINUTE,55);
calendar.set(Calendar.SECOND,0);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
Toast.makeText(MainActivity.this,"START ALARRM" + calendar.getTime().toString(),Toast.LENGTH_LONG).show();

}
});
buttonEnd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
Intent myintent = new Intent(MainActivity.this, MyService.class);
myintent.putExtra("Extra_code","end");
pendingIntent = PendingIntent.getService(MainActivity.this ,0 , myintent,0);
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.cancel(pendingIntent);
Toast.makeText(MainActivity.this,"END ALARM", Toast.LENGTH_LONG).show();
}
});

아래는 MyService 부분입니다.

 

package layout;

(Import 부분 생략)


public class MyService extends Service {

MediaPlayer media_song;

public void erviceStart () {
}

@Override
public void onCreate ()
{
Toast.makeText(this, "알람 서비스 시작",Toast.LENGTH_LONG).show();
media_song = MediaPlayer.create(getBaseContext(), R.raw.bathhouse);
media_song.start();

}

@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
Toast.makeText(this, "알람 서비스 onBind()",Toast.LENGTH_LONG).show();
throw new UnsupportedOperationException("Not yet implemented");
}

@Override
public void onDestroy()
{
media_song.pause();;
Toast.makeText(this, "알람 서비스 onDestroy()", Toast.LENGTH_LONG).show();
super.onDestroy();
}
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
Toast.makeText(this, "알람 서비스 onStart()", Toast.LENGTH_LONG).show();
}
@Override
public boolean onUnbind(Intent intent) {
Toast.makeText(this, "알람 서비스 onUnbind()", Toast.LENGTH_LONG).show();
return super.onUnbind(intent);
}
}

메인 화면에 있는 알람 시작 버튼을 누르고 지정된 시간이 되면 MyService 의 onCreate() 부분에

있는 알람 서비스 시작 토스트 메시지가 뜨고 지정된 음악이 플레이됩니다. 

 

같은 구조로 되어 있는데 알람 취소 버튼을 눌러도 음악은 중지되지 않고 onDestroy() 부분의 

알람 서비스 onDestroy() 메시지도 출력되지 않습니다.

 

AlarmManager.cancel() 을 사용하면 onDestroy() 함수가 불린다고 이해하고 있습니다.

지혜를 주세요 

 

두 번째 질문은 음악이 울리는 부분을 모바일 기기의 기본 알람을으로 하는 방법을 알고 싶습니다.

 

세 번째 질문은 초기에 알람을 세팅하고 엡을 종료한 후 모바일에서 세팅한 알람 시간을 알람 예약에서

확인하는 방법입니다.

모바일 기기의 기본 알람 예약 시스템에 접근이 가능한 방법인 것 같습니다

 

시작하는 초보자에게 도움을 부탁 드립니다.

 

이 글 읽으신 모든 분들 즐거운 하루 되세요 ^^

익명사용자 님이 2016년 2월 12일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...