안드로이드 알림 사운드를 재생하는 방법 작업을 수행 할

미디어 스트림을 통해 알림 사운드를 재생하지 않고 어떻게 알림 사운드를 재생할 수 있는지 궁금했습니다. 지금은 미디어 플레이어를 통해이 작업을 수행 할 수 있지만 미디어 파일로 재생하고 싶지 않고 알림이나 경고 또는 벨소리로 재생하고 싶습니다. 여기 내 코드가 어떻게 생겼는지에 대한 예가 있습니다.

MediaPlayer mp = new MediaPlayer();
mp.reset();
mp.setDataSource(notificationsPath+ (String) apptSounds.getSelectedItem());
mp.prepare();
mp.start();


답변

누군가 여전히 이것에 대한 해결책을 찾고 있다면 Android에서 벨소리 / 알람 소리를 재생하는 방법에 대한 답변을 찾았습니다.

try {
    Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification);
    r.play();
} catch (Exception e) {
    e.printStackTrace();
}

TYPE_NOTIFICATION을 TYPE_ALARM (으)로 변경할 수 있지만 사용자가 버튼이나 무언가를 클릭 할 때 벨소리 r을 추적하여 재생을 중지하고 싶을 것입니다.


답변

소리를 별도로 호출하지 않고 알림을 작성할 때 소리를 포함 시켜서이를 수행 할 수 있습니다.

//Define Notification Manager
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

//Define sound URI
Uri soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(getApplicationContext())
        .setSmallIcon(icon)
        .setContentTitle(title)
        .setContentText(message)
        .setSound(soundUri); //This sets the sound to play

//Display notification
notificationManager.notify(0, mBuilder.build());

답변

기본 알림 사운드를 재생하려면 클래스의 setDefaults (int) 메서드를 사용할 수 있습니다 NotificationCompat.Builder.

NotificationCompat.Builder mBuilder =
        new NotificationCompat.Builder(this)
                .setSmallIcon(R.drawable.ic_notification)
                .setContentTitle(getString(R.string.app_name))
                .setContentText(someText)
                .setDefaults(Notification.DEFAULT_SOUND)
                .setAutoCancel(true);

나는 그것이 당신의 작업을 수행하는 가장 쉬운 방법이라고 생각합니다.


답변

이 시도:

public void ringtone(){
    try {
        Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification);
        r.play();
     } catch (Exception e) {
         e.printStackTrace();
     }
}

답변

질문 이후 오랜 시간이 지났지 만 … 오디오 스트림 유형을 설정해 보셨습니까?

mp.setAudioStreamType(AudioManager.STREAM_NOTIFICATION);

준비하기 전에 수행해야합니다.


답변

나는 거의 같은 질문을했다. 몇 가지 연구를 한 후에 기본 시스템 “알림 사운드”를 재생하려면 알림을 표시하고 기본 사운드를 사용하도록 지시해야한다고 생각합니다. 알림 음을 재생하는 경우 알림 메시지도 표시해야한다는 다른 답변 중 일부에서 논쟁 할 내용이 있습니다.

그러나 알림 API를 약간 조정하면 원하는 것에 가까이 갈 수 있습니다. 빈 알림을 표시 한 후 몇 초 후에 자동으로 제거 할 수 있습니다. 나는 이것이 나에게 효과가 있다고 생각한다. 어쩌면 그것은 당신을 위해 일할 것입니다.

다음 com.globalmentor.android.app.Notifications.java과 같은 알림 소리를 만들 수있는 편리한 방법을 만들었습니다 .

Notifications.notify(this);

또한 LED가 깜박이며 진동 권한이 있으면 진동이 발생합니다. 예, 알림 아이콘이 알림 표시 줄에 나타나지만 몇 초 후에 사라집니다.

이 시점에서 알림이 사라지기 때문에 알림 표시 줄에 스크롤 티커 메시지가있을 수도 있습니다. 당신은 이렇게 할 수 있습니다 :

Notifications.notify(this, 5000, "This text will go away after five seconds.");

이 클래스에는 다른 많은 편리한 방법이 있습니다. Subversion 저장소에서 전체 라이브러리를 다운로드하여 Maven으로 빌드 할 수 있습니다. 그것은 글로벌 멘토 어-코어 라이브러리에 의존하며, Maven으로 빌드하고 설치할 수도 있습니다.


답변

NotificationNotificationManager 를 사용 하여 원하는 알림 을 표시 할 수 있습니다 . 그런 다음 알림으로 재생하려는 사운드를 사용자 정의 할 수 있습니다.