Tôi đang tạo thông báo trong ứng dụng Android của mình và muốn có tùy chọn trong tùy chọn của tôi để đặt âm thanh được sử dụng cho thông báo. Tôi biết rằng trong ứng dụng Cài đặt, bạn có thể chọn âm thanh thông báo mặc định từ danh sách. Danh sách đó đến từ đâu và có cách nào để tôi hiển thị cùng một danh sách trong đơn đăng ký của tôi không?Cách hiển thị danh sách các âm thanh thông báo có sẵn trên Android
Trả lời
Chỉ cần sao chép/dán một số mã từ một trong các ứng dụng của tôi thực hiện những gì bạn đang tìm kiếm.
Đây là trong một handler onClick của một nút có nhãn "thiết lập nhạc chuông" hoặc một cái gì đó tương tự:
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "Select Tone");
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, (Uri) null);
this.startActivityForResult(intent, 5);
Và mã này nắm bắt được sự lựa chọn của người dùng:
@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent intent)
{
if (resultCode == Activity.RESULT_OK && requestCode == 5)
{
Uri uri = intent.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
if (uri != null)
{
this.chosenRingtone = uri.toString();
}
else
{
this.chosenRingtone = null;
}
}
}
Ngoài ra, tôi khuyên người dùng của tôi cài đặt ứng dụng "Đã mở rộng vòng" từ Android Market. Sau đó, bất cứ khi nào hộp thoại này được mở trên thiết bị của họ, chẳng hạn như từ ứng dụng của tôi hoặc từ menu cài đặt của điện thoại, người dùng sẽ có thêm lựa chọn để chọn bất kỳ mp3 nào được lưu trữ trên thiết bị của họ, chứ không phải nhạc chuông được cài sẵn.
Hoặc chỉ cần dính này trong tùy chọn XML của bạn:
<RingtonePreference android:showDefault="true"
android:key="Audio" android:title="Alarm Noise"
android:ringtoneType="notification" />
nội dung đầy đủ của XML mẫu của tôi chỉ dành riêng cho bối cảnh:
<?xml version="1.0" encoding="UTF-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<EditTextPreference android:title="Some value"
android:key="someval"
android:summary="Please provide some value" />
<EditTextPreference android:title="Some other value"
android:key="someval2"
android:summary="Please provide some other value" />
<RingtonePreference android:showDefault="true"
android:key="Audio" android:title="Alarm Noise"
android:ringtoneType="notification" />
</PreferenceScreen>
Cái này trông đẹp hơn .. – Mohsen
Đây là phương pháp tôi sử dụng để có được một danh sách các âm thanh thông báo có sẵn trong điện thoại :)
public Map<String, String> getNotifications() {
RingtoneManager manager = new RingtoneManager(this);
manager.setType(RingtoneManager.TYPE_NOTIFICATION);
Cursor cursor = manager.getCursor();
Map<String, String> list = new HashMap<>();
while (cursor.moveToNext()) {
String notificationTitle = cursor.getString(RingtoneManager.TITLE_COLUMN_INDEX);
String notificationUri = cursor.getString(RingtoneManager.URI_COLUMN_INDEX);
list.put(notificationTitle, notificationUri);
}
return list;
}
EDIT: Đây là nhận xét về cách đặt âm thanh trong NotificationCompat.Builder. Phương pháp này thay vì nhận được ID của nhạc chuông đó là những gì điện thoại sử dụng, thay vì TITLE có thể đọc được bằng con người mà phương pháp khác nhận được. Kết hợp các uri và id, và bạn có vị trí nhạc chuông.
public ArrayList<String> getNotificationSounds() {
RingtoneManager manager = new RingtoneManager(this);
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);
list.add(uri + "/" + id);
}
return list;
}
Đoạn mã trên sẽ trả về một danh sách các chuỗi như "nội dung: // media/nội/âm thanh/truyền thông/27" .. sau đó bạn có thể vượt qua một trong những chuỗi như là một Uri vào. setSound() như:
.setSound(Uri.parse("content://media/internal/audio/media/27"))
Hy vọng rằng rõ ràng đủ :)
Thật tuyệt, nhưng làm thế nào để bạn đặt âm thanh được phát bằng NotificationCompat.Builder.setSound (uri)? Thiết lập một trong những Uri đọc từ RingtoneManager không làm việc – infero
Tôi đã chỉnh sửa bài viết với câu trả lời @infero, hy vọng nó rõ ràng và giải quyết vấn đề của bạn! – Murphybro2
cảm ơn bạn đã cập nhật. Tôi đã cố gắng thiết lập âm thanh theo cách này với id trước, nhưng sử dụng một id mà không tồn tại - :-(grrrr. Cảm ơn một lần nữa – infero
- 1. Cách phát âm thanh thông báo android
- 2. Thông báo Android chỉ phát âm thanh
- 3. Android cách hiển thị thông báo trên màn hình
- 4. Android: Tôi làm cách nào để đưa Âm thanh thông báo bằng Tài nguyên âm thanh?
- 5. Hiển thị Danh sách cảm biến Android
- 6. Chỉ phát âm thanh thông báo mặc định (Android)
- 7. Thông báo Android- Hiển thị toàn bộ thông báo
- 8. Hiển thị sóng âm thanh để ghi âm
- 9. Ngăn chặn nhiều âm báo thông báo android
- 10. Thông báo hiển thị Android từ BroadcastReceiver
- 11. Phát âm thanh mặc định thông báo cục bộ khi hiển thị UIAlertView?
- 12. Android: âm thanh thông báo vô hiệu hóa
- 13. Lấy danh sách các Nhạc chuông sẵn có trong Android
- 14. Android Hiển thị thông báo trên thanh trạng thái mà không có chế độ xem có thể mở rộng
- 15. Các nút Thông báo của Android không hiển thị
- 16. Hiển thị âm thanh/giọng nói
- 17. Android - Cách nhận danh sách tất cả các bộ lọc có chủ ý có sẵn?
- 18. thông báo trên thanh trạng thái trong điện thoại android
- 19. Làm cách nào để có danh sách các báo cáo có sẵn trên một cá thể dịch vụ báo cáo
- 20. Cách kiểm tra xem Google Street View có sẵn và hiển thị thông báo không?
- 21. Xóa phần tử danh sách giống như thông báo trên trang trình bày trong Android
- 22. Android - Thông báo đẩy GCM không xuất hiện trong danh sách thông báo
- 23. Thông báo Không hiển thị
- 24. Trình hiển thị âm thanh HTML5?
- 25. Danh sách các hotfix có sẵn VS2010
- 26. cách hiển thị danh bạ trong danh sách xem trong Android cho Android api 11+
- 27. Cách sử dụng thông báo bằng âm thanh và rung?
- 28. thông báo trống trong danh sách chờ android có tiêu đề
- 29. Thông báo không phát ra âm thanh hoặc rung?
- 30. Nhiều thông báo và chỉ hiển thị thông báo đầu tiên Android
Cảm ơn you.I am khả năng hiển thị nhạc chuông thành công sử dụng mã của bạn Nhưng trong ** onActivityResult() ** phương pháp tôi nhận được lỗi " Không thể tham chiếu tĩnh đến phương thức không tĩnh getParcelableExtra (String) từ gõ Intent "tại dòng của bạn" Uri uri = Intent.getParcelableExtra (RingtoneManager.EXTRA_RINGTONE_PICKED_URI); " – Dharmendra
Dòng đó nên đọc "Uri uri = intent.getParcelableExtra ...". Lưu ý lowecase "i" trong "intent". Chỉ cần một lỗi đánh máy trên mã trên. – zeh
Mã hữu ích và ghi nhớ thư nhỏ trong intent.getParcelableExtra ... Cảm ơn rất nhiều – djk