728x90
반응형
이번에 내가 배워본것은 android에서 알림 기능이다.
일단 알림 버튼 하나 만들어서 버튼을 클릭하면 알림이 뜨는것이다.
xml부터 보자.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:id="@+id/makeAlert"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="알림 생성"
android:textSize="25dp"
android:layout_gravity="center"/>
</LinearLayout>
이것에 대한 화면은 아래와 같다.
자그럼 이제 자바 소스를 살펴보자.
public class MainActivity extends AppCompatActivity implements Button.OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button alert = (Button)findViewById(R.id.makeAlert);
alert.setOnClickListener(this);
}
@Override
public void onClick(View view) {
//알림을 관리하는 객체를 생성 말그대로 알림매니저
NotificationManager notiM = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
//알림을 만들어주는 건축가 생성(AlertDialog와 비슷)
NotificationCompat.Builder builder = null;
//안드로이드 버전이 오레오 버전이상일때는 진입
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
//버전이 오레오 이상인애들은 알림을 만들때 NotificationChannel이라는 개념이 필수임
//그래서 채널 ID와 name 변수를 만들어줌
String channelID = "channel_01";
String channerName = "myChanne101";
//알림 채널 객체 만들어줌
NotificationChannel channel = new NotificationChannel(channelID,channerName,NotificationManager.IMPORTANCE_DEFAULT);
//알림 매니저에게 알림 채널 생성을 요청함
notiM.createNotificationChannel(channel);
//알림 건축가 객체를 channel 아이디와 context 가지고 생성
builder = new NotificationCompat.Builder(this,channelID);
}else{
//오레오 버전보다 낮을때는 여기로 진입해서 알림 건축가 객체 생성
builder = new NotificationCompat.Builder(this);
}
//알림 건축가한테 알림 아이콘 설정할것 알려줌 smallIcon이 없으면 안됨
builder.setSmallIcon(R.drawable.android);
//상태바 즉 위에 드래그 할때 보이는 알림의 설정을 알림 건축가한데 알려주는 부분
builder.setContentTitle("이거슨 제목"); //알림 제목
builder.setContentText("이거슨 알림창 내용"); //알림창 내용
//알림창의 큰 이미지, 이건 없어도 알림이 생성됨
Bitmap bm = BitmapFactory.decodeResource(getResources(),R.drawable.android2);
//setLargeIcon은 매개변수로 비트맵만 받기 때문에 위처럼 사진을 비트맵으로 변환해줘야 함
builder.setLargeIcon(bm); //매개변수로 위에서 만든 bitmap 이미지를 전달함
//건축가가 알림 객체를 만들어서 notification한테 넘겨줌
Notification notification = builder.build();
//알림 매니저에게 알림 만들라고 요청
notiM.notify(1,notification);
//알림 요청시 1번으로 알림 요청한 알림 제거 가능
//notiM.cancel(1);
}
}
만들면서 자세한 설명은 내가 주석으로 해놨다 주석을 통해서 어떤 기능을 하는것들인지 확인해보면 될것 같다.
반응형
'코딩일기 > android studio' 카테고리의 다른 글
안드로이드 독학 20일차 : androidx란? (0) | 2021.07.06 |
---|---|
안드로이드 독학 20일 차 : Gradle 이란? (0) | 2021.07.06 |
안드로이드 독학 18일차 : 커스텀 대화상자(Custom Dialog) (0) | 2021.04.08 |
안드로이드 독학 18일차 : 상황에 따른 버튼 클릭 이벤트 처리 (0) | 2021.04.08 |
안드로이드 독학 17일차 : DatePickerDialog & TimePickerDialog (2) | 2021.04.01 |