2016-09-29 22 views
7

Điều tôi muốn là lưu tệp mp3 trên Bộ nhớ Firebase và sau đó phát trực tuyến tệp đó sang thiết bị Android. Tất cả các hướng dẫn trên Firebase đều thảo luận về tải lên và tải xuống tệp hình ảnh.Tôi có thể sử dụng Bộ nhớ Firebase để phát trực tuyến nhạc trực tuyến không?

Nếu có bất kỳ đám mây nào dễ dàng hơn Firebase để lưu trữ và phát trực tuyến âm thanh cho Android thì vui lòng đề xuất.

+0

có, nó có thể lưu các tập tin mp3 để lưu trữ căn cứ hỏa lực và dòng nội dung – hakim

+0

@hakim cũng sau đó gợi ý cho tôi một câu trả lời. làm sao? –

+1

ít nhất bạn nên thử nó trước, và trong trường hợp bạn có vấn đề bạn có thể yêu cầu trong SO. ở đây để bắt đầu, bạn có thể tải lên bất kỳ tệp nào trong bộ nhớ GC. https://firebase.google.com/docs/storage/android/upload-files để phát/phát nhạc, bạn có thể sử dụng https://developer.android.com/guide/topics/media/mediaplayer.html#mediaplayer – hakim

Trả lời

5
  1. căn cứ hỏa lực cung cấp StreamDownloadTask như Mike đã gợi ý, để nhận InputStream nhưng tiếc MediaPlayer không chấp nhận một dòng suối trực tiếp. Bây giờ chúng tôi có 2 tùy chọn nếu chúng tôi thực sự muốn tiếp tục với InputStream, theo như tôi biết -

    a. Viết một luồng trong tệp tạm thời và chuyển nó tới trình phát đa phương tiện. Cá nhân, Tôi không khuyên bạn nên phương pháp này. Nó bao gồm dữ liệu không cần thiết bằng văn bản và bạn cũng phải duy trì đồng bộ hóa giữa dữ liệu được truyền trực tuyến, viết tệp và phát phương tiện.

    b. Tạo StreamProxy máy chủ như tin tức npr Ứng dụng đang thực hiện. Bạn có thể tìm mã nguồn của ứng dụng here.

  2. Cách đơn giản để chơi các tập tin nhạc từ căn cứ hỏa lực là đầu tiên lấy URL tải bằng cách sử dụng lưu trữ tài liệu tham khảo và vượt qua URL để media player như một nguồn dữ liệu. Dưới đây là đoạn đang -

    public class MainActivity extends AppCompatActivity implements MediaPlayer.OnPreparedListener { 
    
         private MediaPlayer mMediaplayer; 
    
         @Override 
         protected void onCreate(Bundle savedInstanceState) { 
          super.onCreate(savedInstanceState); 
          setContentView(R.layout.activity_main); 
          mMediaplayer = new MediaPlayer(); 
          mMediaplayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
          fetchAudioUrlFromFirebase(); 
         } 
    
         private void fetchAudioUrlFromFirebase() { 
          final FirebaseStorage storage = FirebaseStorage.getInstance(); 
          // Create a storage reference from our app 
          StorageReference storageRef = storage.getReferenceFromUrl("PATH_OF_YOUR_AUDIO_FILE"); 
          storageRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() { 
           @Override 
           public void onSuccess(Uri uri) { 
            try { 
             // Download url of file 
             final String url = uri.toString(); 
             mMediaplayer.setDataSource(url); 
             // wait for media player to get prepare 
             mMediaplayer.setOnPreparedListener(MainActivity.this); 
             mMediaplayer.prepareAsync(); 
            } catch (IOException e) { 
             e.printStackTrace(); 
            } 
    
           } 
          }) 
            .addOnFailureListener(new OnFailureListener() { 
             @Override 
             public void onFailure(@NonNull Exception e) { 
              Log.i("TAG", e.getMessage()); 
             } 
            }); 
    
         } 
    
         @Override 
         public void onPrepared(MediaPlayer mp) { 
          mp.start(); 
         } 
        } 
    
Các vấn đề liên quan