Android 安卓:媒体的使用
我想使应用程序,让我的SD卡中的音频文件列表可用,然后我应该能够从我的应用程序播放该音频文件。甚至暂停恢复音频播放等功能Android 安卓:媒体的使用,android,Android,我想使应用程序,让我的SD卡中的音频文件列表可用,然后我应该能够从我的应用程序播放该音频文件。甚至暂停恢复音频播放等功能 有什么帮助吗?你可以这样试试 class Mp3Filter implements FilenameFilter { public boolean accept(File dir, String name) { return (name.endsWith(".mp3")); } } public class AudioPlayer extends Li
有什么帮助吗?你可以这样试试
class Mp3Filter implements FilenameFilter {
public boolean accept(File dir, String name) {
return (name.endsWith(".mp3"));
}
}
public class AudioPlayer extends ListActivity implements OnClickListener{
private static final String MEDIA_PATH = new String("/sdcard/backup/songs");
private List<String> songs = new ArrayList<String>();
private MediaPlayer mp = new MediaPlayer();
private int currentPosition = 0;
private static final String TAG = "Audio Player Demo ";
private static final String isPlaying = "Media is Playing";
private static final String notPlaying = "Media has stopped Playing";
Button playerButton;
public void onClick(View v) {
if (v.getId() == R.id.play) {
playPause();
}
}
@Override
public void onCreate(Bundle icicle) {
try {
super.onCreate(icicle);
setContentView(R.layout.songlist);
playerButton = (Button) this.findViewById(R.id.play);
playerButton.setText(R.string.stop_label);
playerButton.setOnClickListener(this);
updateSongList();
//demoPlay();
} catch (NullPointerException e) {
Log.v(getString(R.string.app_name), e.getMessage());
}
}
public void updateSongList() {
File home = new File(MEDIA_PATH);
if (home.listFiles( new Mp3Filter()).length > 0) {
for (File file : home.listFiles( new Mp3Filter())) {
songs.add(file.getName());
}
ArrayAdapter<String> songList = new ArrayAdapter<String>(this,R.layout.song_item,songs);
setListAdapter(songList);
}
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
currentPosition = position;
playSong(MEDIA_PATH + songs.get(position));
}
private void playSong(String songPath) {
try {
mp.reset();
mp.setDataSource(songPath);
mp.prepare();
mp.start();
// Setup listener so next song starts automatically
mp.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer arg0) {
nextSong();}
});
} catch(IOException e) {
Log.v(getString(R.string.app_name), e.getMessage());
}
}
private void nextSong() {
if (++currentPosition >= songs.size()) {
// Last song, just reset currentPosition
currentPosition = 0;
// playSong(MEDIA_PATH + songs.get(currentPosition));
} else {
// Play next song
playSong(MEDIA_PATH + songs.get(currentPosition));
}
}
private void demoPause(){
mp.pause();
playerButton.setText(R.string.play_label);
Toast.makeText(this, notPlaying, Toast.LENGTH_LONG).show();
Log.d(TAG, notPlaying);
}
// Initiate playing the media player
private void demoPlay(){
mp.start();
playerButton.setText(R.string.stop_label);
Toast.makeText(this, isPlaying, Toast.LENGTH_LONG).show();
Log.d(TAG, isPlaying);
}
// Toggle between the play and pause
private void playPause() {
if(mp.isPlaying()) {
demoPause();
} else {
demoPlay();
}
}
类Mp3Filter实现FilenameFilter{
公共布尔接受(文件目录,字符串名称){
返回(name.endsWith(“.mp3”);
}
}
公共类AudioPlayer扩展ListActivity实现OnClickListener{
私有静态最终字符串MEDIA_PATH=新字符串(“/sdcard/backup/songs”);
私有列表歌曲=新建ArrayList();
私有MediaPlayer mp=新MediaPlayer();
私有int currentPosition=0;
私有静态最终字符串标记=“音频播放器演示”;
私有静态最终字符串isplay=“媒体正在播放”;
私有静态最终字符串notPlaying=“媒体已停止播放”;
按钮播放按钮;
公共void onClick(视图v){
如果(v.getId()==R.id.play){
播放暂停();
}
}
@凌驾
创建公共空间(捆绑冰柱){
试一试{
超级冰柱;
setContentView(R.layout.songlist);
playerButton=(按钮)this.findViewById(R.id.play);
playerButton.setText(R.string.stop_标签);
playerButton.setOnClickListener(这个);
updateSongList();
//demoPlay();
}捕获(NullPointerException e){
Log.v(getString(R.string.app_name),e.getMessage());
}
}
public void updateSongList(){
文件主目录=新文件(媒体路径);
if(home.listFiles(新的Mp3Filter()).length>0){
对于(文件:home.listFiles(新的Mp3Filter())){
songs.add(file.getName());
}
ArrayAdapter歌曲列表=新的ArrayAdapter(此,R.layout.song_项,歌曲);
setListAdapter(歌曲列表);
}
}
@凌驾
受保护的void onListItemClick(列表视图l、视图v、整数位置、长id){
当前位置=位置;
播放歌曲(媒体路径+歌曲。获取(位置));
}
私有void playSong(String songPath){
试一试{
mp.reset();
mp.setDataSource(songPath);
mp.prepare();
mp.start();
//设置侦听器,使下一首歌自动开始
mp.setOnCompletionListener(新的OnCompletionListener(){
完成时的公共作废(MediaPlayer arg0){
nextSong();}
});
}捕获(IOE异常){
Log.v(getString(R.string.app_name),e.getMessage());
}
}
私隐{
如果(++currentPosition>=songs.size()){
//最后一首歌,只需重置当前位置
currentPosition=0;
//播放歌曲(媒体路径+歌曲获取(当前位置));
}否则{
//播放下一首歌
播放歌曲(媒体路径+歌曲获取(当前位置));
}
}
私有void demoPause(){
mp.pause();
playerButton.setText(R.string.play_标签);
Toast.makeText(this,notPlaying,Toast.LENGTH_LONG).show();
Log.d(标记,不播放);
}
//开始播放媒体播放器
私人游戏{
mp.start();
playerButton.setText(R.string.stop_标签);
Toast.makeText(this,isplay,Toast.LENGTH_LONG).show();
日志d(标签、显示);
}
//在播放和暂停之间切换
私人空间暂停播放(){
if(mp.isPlaying()){
demoPause();
}否则{
demoPlay();
}
}
}您可以看到下面的URL流式音频代码
private void playVideo() {
try {
final String path = "http://www.a1freesoundeffects.com/animals12557/catmeow.wav";
// If the path has not changed, just start the media player
if (path.equals(current) && mp != null) {
mp.start();
return;
}
current = path;
// Create a new media player and set the listeners
mp = new MediaPlayer();
mp.setDataSource(path);
mp.prepare();
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
} catch (Exception e) {
if (mp != null) {
mp.stop();
mp.release();
}
}
}
@谢谢你的回答。。。我想知道,如果我想补充这一点,我应该能够流媒体从互联网比我怎么能做到这一点???有什么想法吗???再次感谢我在下面添加了答案,如果您知道如何从我的android应用程序中找到DLNA设备列表,您也可以参考此链接了解更多信息??这样我就可以把媒体转移到那个设备上。。