본문 바로가기
코딩일기/android studio

안드로이드 독학 19일차 : 알림(Notification)

by 욱파이어니어 2021. 4. 9.
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);


    }
}

만들면서 자세한 설명은 내가 주석으로 해놨다 주석을 통해서 어떤 기능을 하는것들인지 확인해보면 될것 같다.

반응형