Làm cách nào để hiển thị số MediaController
khi phát tệp âm thanh? Tôi đang tạo một thể hiện của MediaController
và gọi phương thức show()
của nó, nhưng nó không hiển thị. Có thể giúp tôi trong việc phân loại vấn đề này không?Tôi làm cách nào để hiển thị MediaController trong khi phát âm thanh trong Android?
Trả lời
Dưới đây là ví dụ về Hoạt động sử dụng MediaPlayer và MediaController để phát âm thanh.
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.media.MediaPlayer.OnPreparedListener;
import android.view.MotionEvent;
import android.widget.MediaController;
import android.widget.TextView;
import java.io.IOException;
public class AudioPlayer extends Activity implements OnPreparedListener, MediaController.MediaPlayerControl{
private static final String TAG = "AudioPlayer";
public static final String AUDIO_FILE_NAME = "audioFileName";
private MediaPlayer mediaPlayer;
private MediaController mediaController;
private String audioFile;
private Handler handler = new Handler();
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.audio_player);
audioFile = this.getIntent().getStringExtra(AUDIO_FILE_NAME);
((TextView)findViewById(R.id.now_playing_text)).setText(audioFile);
mediaPlayer = new MediaPlayer();
mediaPlayer.setOnPreparedListener(this);
mediaController = new MediaController(this);
try {
mediaPlayer.setDataSource(audioFile);
mediaPlayer.prepare();
mediaPlayer.start();
} catch (IOException e) {
Log.e(TAG, "Could not open file " + audioFile + " for playback.", e);
}
}
@Override
protected void onStop() {
super.onStop();
mediaController.hide();
mediaPlayer.stop();
mediaPlayer.release();
}
@Override
public boolean onTouchEvent(MotionEvent event) {
//the MediaController will hide after 3 seconds - tap the screen to make it appear again
mediaController.show();
return false;
}
//--MediaPlayerControl methods----------------------------------------------------
public void start() {
mediaPlayer.start();
}
public void pause() {
mediaPlayer.pause();
}
public int getDuration() {
return mediaPlayer.getDuration();
}
public int getCurrentPosition() {
return mediaPlayer.getCurrentPosition();
}
public void seekTo(int i) {
mediaPlayer.seekTo(i);
}
public boolean isPlaying() {
return mediaPlayer.isPlaying();
}
public int getBufferPercentage() {
return 0;
}
public boolean canPause() {
return true;
}
public boolean canSeekBackward() {
return true;
}
public boolean canSeekForward() {
return true;
}
//--------------------------------------------------------------------------------
public void onPrepared(MediaPlayer mediaPlayer) {
Log.d(TAG, "onPrepared");
mediaController.setMediaPlayer(this);
mediaController.setAnchorView(findViewById(R.id.main_audio_view));
handler.post(new Runnable() {
public void run() {
mediaController.setEnabled(true);
mediaController.show();
}
});
}
}
Đây là một bố cục có thể được sử dụng với các mã trên:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_audio_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Now playing:"
android:textSize="25sp"
android:textStyle="bold"
/>
<TextView
android:id="@+id/now_playing_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dip"
android:layout_marginLeft="10dip"
android:layout_marginRight="10dip"
android:layout_gravity="center"
android:text="Now playing.."
android:textSize="16sp"
android:textStyle="italic"
/>
</LinearLayout>
hiện ai đã thử mã trên ?, nó không hoạt động, tôi không nghe thấy âm thanh hoặc hiển thị âm thanh, có tôi định nghĩa 'AUDIO_FILE_NAME' một cái gì đó như thế này "mysite.com/talk/1.mp3" –
Cảm ơn điều này đã giúp tôi rất nhiều !!! – krisDrOid
Tôi (cuối cùng) đã sửa phương thức onStop theo đề xuất của @ jp36. Cảm ơn bạn đã chỉnh sửa @ jp36! – user229487
tôi vẫn không có đủ đại diện để Bình luận vì vậy tôi có phải chỉ cần đăng bài này như một câu trả lời.
@ câu trả lời user229487 của
bạn cần phải thêm mediaController.hide();
với phương pháp onStop()
. Nếu bạn không làm điều này và bạn tình cờ xoay cửa sổ hoặc đóng cửa sổ khi nó được hiển thị cho bạn sẽ nhận được một lỗi Activity x has leaked window
Phương pháp mới sẽ trông như thế này
@Override
protected void onStop() {
super.onStop();
mediaController.hide();
mediaPlayer.stop();
mediaPlayer.release();
}
tôi sao chép đoạn mã trên từ user229487 nguyên văn nhưng không thể làm cho nó hoạt động. Do tôi là người mới đến với nhà phát triển Android, tôi đã phát hiện ra một cách khó khăn mà bạn cần phải đặt ý định cũng như một vài thứ khác. Tôi cũng không hiểu chính xác làm thế nào ý định sẽ làm việc với một giao diện người dùng (một lần nữa tôi mới), nhưng sẽ làm việc trên nó.
vài điều cho noobs khác như tôi để lấy mã ở trên để làm việc (tôi ít nhất đã nhận nó để không sụp đổ ngay bây giờ và chơi một bài hát :)):
Sẽ không biên dịch mà không này:
@Override
public int getAudioSessionId() {
return 0;
}để thiết lập âm thanh bằng tay: (dòng thay đổi :)
public static final String AUDIO_FILE_NAME = Environment.getExternalStorageDirectory()+"/MusicFolder/Song.mp3";
Cài đặt ý định
Thêm dòng này:this.getIntent().putExtra(AUDIO_FILE_NAME,AUDIO_FILE_NAME);
Trước khi dòng này:audioFile = this.getIntent().getStringExtra(AUDIO_FILE_NAME);
nên biên dịch và chơi bài hát bây giờ.
Tôi chưa được phép bình luận ... do đó tôi viết ở đây. Đoạn mã trên là tuyệt vời. Tôi chỉ cần đưa ra số điện thoại
mediaPlayer.prepare();
bit trong lần thử, nếu không hoạt động sẽ bị lỗi. Không chắc chắn những gì bit này nên được làm, nó đang làm việc rất tốt mà không có nó. Cảm ơn!!
- 1. Làm cách nào để triển khai trình phát âm thanh cho Android bằng MediaPlayer và MediaController?
- 2. phát âm thanh từ luồng trong android
- 3. Phát âm thanh nổi trong android
- 4. Tôi làm cách nào để phát tệp âm thanh trong Android?
- 5. Android: Tôi làm cách nào để đưa Âm thanh thông báo bằng Tài nguyên âm thanh?
- 6. Tôi làm cách nào để phát âm thanh ngược lại với API âm thanh trên web?
- 7. Làm cách nào để phát âm thanh trong WinForms?
- 8. Hiển thị sóng âm thanh để ghi âm
- 9. Cách phát âm thanh thông báo android
- 10. Thời lượng trình phát âm thanh HTML5 Hiển thị Nan
- 11. Cách phát một hiệu ứng âm thanh trong Android
- 12. Cách hiển thị thanh tải khi hiển thị với Webview.loadUrl trong android?
- 13. cách hiển thị thanh tiến trình trước khi phát video
- 14. Làm thế nào để phát âm thanh trong JavaScript
- 15. Hiển thị âm thanh/giọng nói
- 16. Làm cách nào để phát âm thanh của iPhone?
- 17. Làm cách nào để thực hiện các thao tác khi phát âm thanh trong iPhone?
- 18. Thông báo Android chỉ phát âm thanh
- 19. Làm cách nào để phát âm thanh cửa sổ chuẩn?
- 20. Cách phát âm thanh liên tục trong khi các thay đổi định hướng trong Android?
- 21. Hiển thị và ẩn nút phát qua VideoView trong Android
- 22. Làm cách nào để phát tệp âm thanh với jQuery?
- 23. android: Phát hiện mức âm thanh
- 24. Cách phát âm thanh bằng Python KHÔNG làm gián đoạn âm nhạc/các âm thanh khác phát khi đang chơi
- 25. Làm cách nào để phát Âm thanh/Video trực tuyến từ url?
- 26. Phát âm thanh mặc định thông báo cục bộ khi hiển thị UIAlertView?
- 27. Làm thế nào để phát âm thanh TICK mặc định?
- 28. Tắt âm thanh mặc định khi hiển thị MessageBox trong WP7
- 29. Chất lượng âm thanh kém khi ghi/phát âm thanh - Android SDK
- 30. Android - Phát âm thanh từ tai nghe
có biểu tượng dấu kiểm bên cạnh xếp hạng của mỗi câu trả lời (ở bên trái, bạn sẽ thấy nó), chỉ cần nhấp vào nó – Lope
Vui lòng chấp nhận một trong các câu trả lời bên dưới. Nó giúp hiển thị một số đánh giá cao cho những người dành thời gian để trả lời câu hỏi của bạn. – Pieter