2015-06-19 23 views
5

Danh sách bài hát hiển thị ứng dụng của tôi từ thẻ sd. Tôi muốn có thể phát bài hát trên trình phát mặc định. Tôi có tất cả dữ liệu về bài hát: id, tiêu đề, album, nghệ sĩ, đường dẫn ...Phát bài hát trên trình phát nhạc mặc định - android

Có cách nào để khởi chạy trình phát mặc định để phát bài hát không?

Những gì tôi đã cố gắng:

  1. Sử dụng Intent.CATEGORY_APP_MUSIC. Tôi có thể khởi chạy trình phát mặc định nhưng không thể đặt bài hát. Intent.makeMainSelectorActivity(Intent.ACTION_MAIN, Intent.CATEGORY_APP_MUSIC) mở ứng dụng nhạc mặc định. Tuy nhiên intent.setData(Uri.withAppendedPath(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, id)) ném ngoại lệ mà không tìm thấy ý định.

  2. Sử dụng không được dùng nữa MediaStore.INTENT_ACTION_MUSIC_PLAYER. Không tìm thấy hoạt động. Intent(MediaStore.INTENT_ACTION_MUSIC_PLAYER).setDataAndType(Uri.fromFile(songFile), "audio/*")

  3. Sử dụng INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH. Khởi chạy tìm kiếm, nhưng không phải là bài hát, nói không thể chuẩn bị pha trộn trên Play music. Tuy nhiên, nó hoạt động từ Google bây giờ, vì vậy nó có thể là chìa khóa. Intent(MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH).putExtra(SearchManager.QUERY, name)
  4. Sử dụng ACTION_VIEW. nó hoạt động nhưng nó khởi chạy một phiên bản nhỏ gọn của trình phát và tôi muốn trình phát đầy đủ.

compat view

Lưu ý: Tôi muốn để khởi động chơi ngoài, không phải trong ứng dụng của tôi.

Cập nhật: Có vẻ như mã hóa Google Hiện hành đã được mã hóa cứng Hỗ trợ Play Âm nhạc và Youtube.

+0

trùng lặp có thể xảy ra của [Android ra mắt máy nghe nhạc sử dụng ý] (h ttp: //stackoverflow.com/questions/3114471/android-launching-music-player-using-intent) –

+0

Trên thực tế không, tôi muốn khởi chạy bài hát cụ thể, không chỉ là trình phát nhạc. –

+0

Bạn có tìm thấy câu trả lời> –

Trả lời

0

Hãy thử với một cái gì đó đơn giản như thế này:

MediaPlayer mp = new MediaPlayer();  
mp.setLooping(true); 
try { 
    mp.setDataSource(mFile); //mFile is the path to your mp3 file 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
try { 
    mp.prepare(); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
mp.start(); 

Và ví dụ một nhiều hơn với MadiaPlayer và tập tin được lưu trong res/thô/thư mục:

MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.sound_file_1); 
mediaPlayer.start(); // no need to call prepare(); create() does that for you 

Thông tin thêm về: http://developer.android.com/guide/topics/media/mediaplayer.html

+0

** Lưu ý **: Tôi muốn khởi chạy ** Trình phát bên ngoài **, không có trong ứng dụng của tôi. –

+0

Hmmm, vì vậy bạn đã thử với lựa chọn này là câu trả lời hay nhất ở đây http://stackoverflow.com/questions/3114471/android-launching-music-player-using-intent? –

+0

Có, nó khởi chạy một phiên bản nhỏ gọn chỉ để chơi chứ không phải toàn bộ khách hàng. –

0
Intent musicIntent = new Intent(); 
//use Action VIEW to launch app 
musicIntent.setAction(Intent.ACTION_VIEW);  

String mimeType = getMimeTypeFromFile(); // in your case it is audio 
Uri uri = " yourfile uri"; 
musicIntent.setDataAndType(uri,mimeType); 
startActivity(intent); 

Ứng dụng xem mặc định sẽ được mở nếu loại mime được thay đổi, đối với video mime-type vid máy nghe nhạc eo sẽ được mở, cho máy nghe nhạc âm thanh và cho bộ sưu tập hình ảnh.

Nếu có nhiều người chơi thì Resolver hoạt động sẽ được mở.

Đừng quên để bắt ActivityNotFoundException

Trong Máy nghe nhạc cho ACTION_VIEW AudioPreview activty được gọi với ưu tiên. có các hoạt động khác xử lý hành động này, chỉ cần kiểm tra một lần với hành động "com.android.music.PLAYBACK_VIEWER" thay vì ACTION_VIEW hoặc với nó.

+0

Điều này khác với giải pháp 4 trong câu hỏi của tôi như thế nào? –

+0

kiểm tra AndroidManifest.xl của ứng dụng Nhạc, bạn có thể lấy mã từ AndroidXRef –

+0

android.content.ActivityNotFoundException: Không tìm thấy Hoạt động nào để xử lý Intent {act = com.android.music.PLAYBACK_VIEWER dat = content: // media/external/audio/media/2797 typ = audio/*} –

3

Nếu bạn muốn bắt đầu ứng dụng nghe nhạc mặc định trên thiết bị, nên cố gắng này:

Intent intent = new Intent(); 
intent.setAction(android.content.Intent.ACTION_VIEW); 
File file = new File(YOUR_SONG_URI); 
intent.setDataAndType(Uri.fromFile(file), "audio/*"); 
startActivity(intent); 
+0

Nó khởi chạy phiên bản nhỏ gọn của trình phát nhạc mặc định, xem ảnh trong câu hỏi được cập nhật –

+0

ah, xin lỗi, tôi nhớ bạn hiểu! – Karoly

+0

Nó là ok, nó là giải pháp gần nhất. –

0

nó đang tung ra một phiên bản nhỏ gọn để chơi như ứng dụng mà đã thực hiện nó theo cách đó, bạn có thể tìm thấy nhiều ứng dụng của bên thứ 3 mà mở ứng dụng đầy đủ với

Intent intent = new Intent(); 
intent.setAction(android.content.Intent.ACTION_VIEW); 
File file = new File(YOUR_SONG_URI); 
intent.setDataAndType(Uri.fromFile(file), "audio/*"); 
startActivity(intent); 

như bạn đã cố gắng này

Các vấn đề liên quan