2016-10-26 9 views
0

私は、通知のリストは、Androidデバイス上で利用できるサウンドを取得するには、次のコードを使用しています:通知サウンドをプログラムで設定しないでURIを使用して再生する方法

public static ArrayList<String> getNotificationSounds(Activity curActivity) { 
    RingtoneManager manager = new RingtoneManager(curActivity); 
    manager.setType(RingtoneManager.TYPE_NOTIFICATION); 
    Cursor cursor = manager.getCursor(); 

    ArrayList<String> list = new ArrayList<>(); 
    while (cursor.moveToNext()) { 
     String id = cursor.getString(RingtoneManager.ID_COLUMN_INDEX); 
     String uri = cursor.getString(RingtoneManager.URI_COLUMN_INDEX); 
     String name = cursor.getString((RingtoneManager.TITLE_COLUMN_INDEX)); 

     list.add(name); 
    } 

    return list; 
} 

今、私はこれらの通知音(なしの画像、またはタイトル)のいずれかをプレイしたい、だけ音を省略すると、デフォルトとして設定されます。

は、私はそのデータソースを言ってエラーが出る

String uri = cursor.getString(RingtoneManager.URI_COLUMN_INDEX); 

上記の方法から得られるこのURIを使用することにより

RingtoneManager.setActualDefaultRingtoneUri(this,RingtoneManager.TYPE_NOTIFICATION,soundClipUri); 

を使用して、デフォルトとして音を設定することをお勧め多くのソリューションを見てきました有効じゃない。

ので、それを合計する

1)どのようにそれをデフォルトとして設定することなく、通知音を再生するには?

2)通知音のUriを取得して使用するにはどうすればよいですか?

EDIT:私は上記のカーソル問合せからURIを印刷しようとしたとき、私は同じ結果を得る:使用可能な通知音のすべてのための

content://media/internal/audio/media 

を。

これに通知音符を追加し、結果をUriとして渡すことになっていますか?

通知を再生するコード:

Ringtone r = RingtoneManager.getRingtone(getApplicationContext(),uri); 
r.play(); 
+0

「私はというエラーを取得:getNotification音URI方式のため

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

コード:ここで

溶液が、私は通知音のURIを取得し、次のコードを使用して、それを再生していますそのデータソースは有効ではありません " - Uriとは何ですか?どうやって使ってるの? – CommonsWare

+0

私の質問の編集:) – SoulRayder

+0

@CommonsWare:どうぞご覧ください。 – SoulRayder

答えて

1

は私の問題への解決策を見つけました。

内部通知音が適切に配置されるように、通知音のIDをそのメソッドから返されたURIに追加する必要があります。

public static Uri getNotificationSoundUri(Context context,String soundClipId) 
{ 
    RingtoneManager manager = new RingtoneManager(context); 
    manager.setType(RingtoneManager.TYPE_NOTIFICATION); 
    Cursor cursor = manager.getCursor(); 

    ArrayList<NotificationSound> list = new ArrayList<>(); 
    while (cursor.moveToNext()) { 
     if(soundClipId.equals(cursor.getString(RingtoneManager.ID_COLUMN_INDEX))) 
     { 
      return Uri.parse(cursor.getString(RingtoneManager.URI_COLUMN_INDEX)+"/"+cursor.getString(RingtoneManager.ID_COLUMN_INDEX)); 
     } 

    } 

    return RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
} 
関連する問題