알림(상태 표시줄 알림)에 대한 자세한 설명


이 섹션 소개:

이 섹션에서는 Android의 상태 표시줄에 알림 정보를 표시하는 데 사용되는 컨트롤에 대해 설명합니다. 알림, 대부분의 내용을 믿습니다. Android를 연구하는 사람이라면 누구나 이에 익숙하며 인터넷에서 알림 사용에 대한 많은 튜토리얼은 2.x를 기반으로 합니다. 요즘 일반적인 Android 기기는 기본적으로 4.x 이상, 심지어는 5.0 이상입니다. 그들은 모두 다릅니다! 이 섹션에서는 4.x 이상 기반 알림과 5.0 이상 기반 알림에 대해 설명합니다. 고급 튜토리얼의 Android 5.0의 새로운 기능 장에서 설명하겠습니다~

공식 문서의 알림에 대한 일부 소개:

Design Thought: Android 4.4 이하의 알림

번역: 알림

API Document: 알림

위 웹사이트에 접속하려면 사다리가 필요할 수 있습니다~


1. 디자인 문서 부분의 해석


1) 알림의 기본 레이아웃

1.png

위 구성 요소의 순서는 다음과 같습니다.

  • Icon/Photo: 큰 아이콘
  • Title/Name: 제목
  • Message: 콘텐츠 정보
  • Timestamp: 알림 시간, 기본값은 시스템이 알림을 보내면 setWhen()
  • Secondary Icon: 작은 아이콘
  • content text, 작은 아이콘 왼쪽에 있는 텍스트

2) 확장 레이아웃

으로 설정할 수도 있습니다.

Jelly Bean에서는 알림 세부정보에 더 많은 이벤트를 제공할 수 있습니다. 레이아웃을 확장하여 메시지의 처음 몇 줄이나 이미지 미리보기를 표시할 수 있습니다. 이를 통해 사용자는 더 많은 콘텐츠를 볼 수 있으며 때로는 전체 메시지를 볼 수도 있습니다. 사용자는 두 손가락으로 핀치 줌하거나 슬라이드하여 확장된 레이아웃을 열 수 있습니다. Android는 애플리케이션을 개발할 때 사용할 단일 메시지에 대해 두 가지 확장 레이아웃(텍스트 및 이미지)을 제공합니다.

2.png

3.png

다른 디자인 사항에 대해서는 하나씩 언급하지 않겠습니다. 관심이 있으시면 위에 제공된 API 문서를 확인하세요. 이 알림은 버전 4.x 이상에서 다양할 수 있습니다! 우리가 더 주목하는 것은 이 기능을 사용하려면 어떻게 코드를 작성해야 할까요? 알림 사용법을 알아볼까요?


2 알림의 기본 사용 프로세스

상태 알림 표시줄에는 주로 알림 및 알림 관리자

Notification: 알림 표시줄의 각 속성에 해당하는 알림 정보 클래스

NotificationManager가 있습니다. : 알림 보내기, 알림 지우기 등의 작업을 담당하는 상태 표시줄 알림 관리 클래스입니다.

사용된 기본 프로세스:

  • 1단계. 알림 관리자 개체를 가져옵니다. NotificationManager mNManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
  • 2단계. 알림 표시줄에 대한 빌더 생성 클래스를 만듭니다. 알림.빌더 mBuilder = new 알림.빌더(this);
  • 3단계. 제목, 콘텐츠, 아이콘, 동작 등 빌더 관련 설정을 지정하세요!
  • Step 4.Builder의 Build() 메서드를 호출하여 알림에 값을 할당합니다.
  • Step 5.NotificationManager의 inform() 메서드를 호출하여 알림을 보냅니다!
  • PS:또한 알림을 취소하기 위해 NotificationManager의 cancel() 메서드를 호출할 수도 있습니다

3. 일부 관련 메서드를 설정합니다.

Notification.Builder mBuilder = newNotification.Builder(this );

그런 다음 다음 관련 메서드를 호출하여 설정합니다. (공식 API 문서:Notification.Builder) 일반적으로 사용되는 방법은 다음과 같습니다:

  • setContentTitle(CharSequence): 제목 설정
  • setContentText(CharSequence): 내용 설정
  • setSubText(CharSequence): 내용 아래에 작은 텍스트 줄 설정
  • setTicker(CharSequence ) : 컬렉션 설정 알림 수신 시 상단에 표시되는 텍스트 정보
  • setWhen(long): 알림 시간을 설정하며, 일반적으로 알림 수신 시 System.currentTimeMillis()로 설정됩니다
  • setSmallIcon(int ): 오른쪽 하단 아이콘에 작은 아이콘을 설정합니다. 이 작은 아이콘은 알림 수신 시 상단에도 표시됩니다
  • setLargeIcon(Bitmap): 왼쪽에 큰 아이콘을 설정
  • setAutoCancel( boolean): 사용자가 알림 패널을 클릭한 후 알림을 취소할지 여부(기본값은 취소하지 않음)
  • setDefaults(int): 알림에 사운드, 플래시 및 진동 효과를 추가하는 가장 쉽고 쉬운 방법 기본 속성을 사용하면 여러 속성을 결합할 수 있습니다.
    Notification.DEFAULT_VIBRATE(기본 진동 알림 추가)
    Notification.DEFAULT_SOUND(기본 소리 알림 추가)
    Notification.DEFAULT_LIGHTS(기본 3개 추가) colors Light 알림)
    Notification.DEFAULT_ALL(기본적으로 위의 3개 알림 모두 추가)
  • setVibrate(long[]): 진동 모드를 설정합니다. 예:
    setVibrate(new long[] {0,300,500,700}) ; 0ms 지연, 300ms 동안 진동, 500ms 지연, 그런 다음 700ms 동안 진동하십시오. 진동 사용법은 나중에 설명하겠습니다!
  • setLights(int argb, int onMs, int offMs): 세 가지 색상의 조명을 설정합니다. 매개변수는 조명 색상, 일부 휴대폰에는 3색 조명이 없습니다. 또한 3색 조명 알림을 지원하려면 알림에 대한 플래그를 Notification.FLAG_SHOW_LIGHTS로 설정해야 합니다!
  • setSound(Uri): 알림을 받을 때 벨소리를 설정합니다. 시스템을 사용하거나 직접 설정할 수 있습니다. 예는 다음과 같습니다.
    .setDefaults(Notification.DEFAULT_SOUND) //기본 벨소리 가져오기
    .setSound (Uri.parse("file:///sdcard/xx/xx.mp3")) //사용자 정의 벨소리 가져오기
    .setSound(Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "5")) //Android 멀티미디어 라이브러리에서 벨소리 가져오기

  • setOngoing(boolean): true로 설정하면 진행 중인 알림임을 나타냅니다. 그들은 일반적으로 표현하는 데 사용됩니다. 사용자가 적극적으로 참여하거나(예: 음악 재생) 어떤 방식으로든 대기하여 장치를 점유하는(예: 파일 다운로드, 동기 작동, 활성 네트워크 연결)

  • setProgress(int,int,boolean): 진행률 표시줄로 알림 설정 매개변수는 진행률 표시줄의 최대값, 현재 진행률, 진행률이 불확실한지 여부입니다. 확인된 진행률 표시줄인 경우: setProgress(max, Progress, false)를 호출하여 알림을 설정합니다. 진행 상황을 업데이트할 때 여기에서 진행 상황을 업데이트하라는 알림을 시작하고 다운로드가 완료된 후 진행률 표시줄을 제거하세요. , setProgress(0, 0, false)를 호출하면 됩니다. 불확정(지속적으로 활성화) 진행 표시줄인 경우 이는 처리 진행 상황을 정확하게 알 수 없는 상태에서 활동이 계속되고 있음을 의미하므로 setProgress(0, 0, true)를 호출합니다. , 작업이 끝나면 setProgress(0, 0, false)를 호출하고 알림을 업데이트하여 표시기 막대를 제거합니다
  • setContentIntent(PendingIntent): PendingIntent는 Intent와 약간 다르며 실행 횟수를 설정할 수 있습니다. 주로 원격 서비스 통신, 알람, 알림, 런처, 문자 메시지에 사용됩니다. 예를 들어 여기를 전달하세요. 보류 중인 시작 활동: getActivity(Context, int, Intent, int), 물론 서비스 또는 브로드캐스트를 시작할 수도 있습니다. PendingIntent의 비트 식별자(네 번째 매개변수):
    FLAG_ONE_SHOT는 반환된 PendingIntent가 한 번만 실행될 수 있으며 실행 후 자동으로 취소됨을 의미합니다.
    FLAG_NO_CREATE는 설명된 PendingIntent가 존재하지 않으면 해당 PendingIntent가 취소됨을 의미합니다. 생성되지 않으며 NULL
    FLAG_CANCEL_CURRENT을 반환한다는 것은 해당 PendingIntent가 이미 존재한다는 것을 의미하며, 전자를 취소한 다음 새 PendingIntent를 생성합니다. 이는 데이터를 최신 상태로 유지하는 데 도움이 되며 인스턴트 메시징을 위한 통신 시나리오에 사용할 수 있습니다.
    FLAG_UPDATE_CURRENT 업데이트된 PendingIntent
    사용 예를 나타냅니다:

    //点击后跳转Activity
    Intent intent = new Intent(context,XXX.class);  
    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);  
    mBuilder.setContentIntent(pendingIntent)


  • setPriority(int): 우선 순위 설정 :

    PriorityUser
    MAX이 이벤트는 시간이 중요하거나 즉시 처리해야 함을 사용자에게 알리는 중요하고 긴급한 알림입니다.
    HIGH높은 우선순위는 단문 메시지나 채팅 등 사용자에게 더 흥미로운 중요한 커뮤니케이션 콘텐츠에 사용됩니다.
    DEFAULT기본 우선순위는 특별한 우선순위 분류가 없는 알림에 사용됩니다.
    LOW낮은 우선순위는 긴급하지 않은 이벤트를 사용자에게 알릴 수 있습니다.
    MIN은 배경 메시지(예: 날씨 또는 위치 정보)에 사용됩니다. 우선순위가 가장 낮은 알림은 상태 표시줄에 아이콘만 표시하며, 사용자가 알림 창을 아래로 내리는 경우에만 콘텐츠가 표시됩니다.
    해당 속성: 알림.PRIORITY_HIGH...

4. 코드 예: 가장 일반적인 알림:

알림 사용법을 경험하기 위한 가장 간단한 예를 작성해 보겠습니다.

렌더링 실행 :

4.gif

Key code:

여기에 MainActivity.java 코드를 직접 게시하세요:

공개 클래스 MainActivity는 AppCompatActivity를 확장하여 View.OnClickListener를 구현합니다.
    비공개 정적 최종 int NOTIFYID_1 = 1;

    비공개 버튼 btn_show_normal;
비공개 버튼 btn_close_normal;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mContext = MainActivity.this;
        //创建大图标的Bitmap
        LargeBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.iv_lc_icon);
        mNManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        bindView();

    }


    private void bindView() {
        btn_show_normal = (버튼) findViewById(R.id.btn_show_normal);
        btn_close_normal = (버튼) findViewById(R.id.btn_close_normal);
        btn_show_normal.setOnClickListener(this);
        btn_close_normal .setOnClickListener(this);
    }


    @Override ㅋㅋㅋ后启动一个Activity
                Intent it = new Intent(mContext, OtherActivity. class);
               PendingIntent pit = PendingIntent.getActivity(mContext, 0, it, 0);
통 // 사진 설정, 제목 알림, 전송 시간, 프롬프트 방법 및 기타 속성
notification.builder mbuilder = newnotice.builder (this) Text ("당신을 머물 수 없게 만드는 100가지 방법이 있습니다~") / /Content
        .setSubText("——내 이름은 Ye Liangchen임을 기억하세요")                                                                   .setTicker("예량진 정보가 보낸 메시지를 받았습니다~") // 정보를 받은 후 상태 표시줄에 표시되는 텍스트 정보
.setwhen( System.Currenttimememillis ()) // 알림 시간 설정
.Setsmallicon (R.MIPMAP.IC_LOL_ICON) // 작은 아이콘 설정
.Setlargeicon ( LargeBitmap)                                         ~       ..setSound(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.biaobiao)) //사용자 정의 프롬프트 사운드 설정
         .setAutoCancel(true)                    설정 후 알림 취소 클릭
.setContentIntent(pit); mNManager.notify(NOTIFYID_1, inform1);
                                                              ~ ID별 알림 취소 외에도 cancelAll()을 호출하여 애플리케이션에서 생성된 모든 알림을 닫을 수도 있습니다.
                mNManager.cancel(NOTIFYID_1);            }
       }
}


댓글이 매우 자세해서 하나씩 자세히 다루지는 않겠습니다~


5. 코드 샘플 다운로드:

NotificationDemo.zip

이 섹션 요약:


자, 이 섹션에서는 4.x 버전의 알림의 기본 사용법을 소개합니다. 매우 간단합니다~

물론 알림을 사용자 정의할 수도 있습니다. 관심이 있으시면 직접 확인하실 수는 없습니다. 여기서는 진정하세요. 연구~ 그런데 이 섹션의 일부는 다음 블로그를 참조하고 링크를 게시하면 읽을 수도 있습니다. Android 알림 표시줄 통합에 대한 종합 연구 알림(데모를 통해 완전히 이해할 수 있음) 다음으로 작성되었습니다. 꽤 디테일해요~ 이번 편은 여기까지입니다. 감사합니다~