2012-03-21 136 views
0

我打算做一个音乐播放器,用户可以从列表中选择一首歌曲。该歌曲将根据用户选择播放。现在,我已经成功,如果只玩一首歌,我们可以清楚地把网址中的代码:Android手机音乐播放器?

var myMedia = new Media('/android_asset/www/media/face.mp3', mediaSuccess, mediaError); 

这是我的整个js文件:

$("#mediapage").live("pagecreate", function(event) { 
var page = this; 
var mediaStatus; 

mediaSuccess = function(){ 
} 

mediaError = function(error) { 
    alert('Media Error: '+error.message); 
} 

var myMedia = new Media('/android_asset/www/media/face.mp3', mediaSuccess, mediaError); 

$("#mediaplayLink").live("click",function(e) { 
    myMedia.play(); 
    mediaStatus = setInterval(function() { 
     myMedia.getCurrentPosition(
      function(position) { 
       if(position > -1) $("#status",page).html("Second "+position+" of "+myMedia.getDuration() + " seconds."); 

      }) 
    }, 1000); 
    e.preventDefault(); 
}); 
$("#mediapauseLink").live("click",function(e) { 
    myMedia.pause(); 
    e.preventDefault(); 
}); 
$("#mediastopLink").live("click",function(e) { 
    $("#status", page).html(""); 
    clearInterval(mediaStatus); 
    myMedia.stop(); 
    e.preventDefault(); 
}); 

});

和html代码:

<div data-role="content"> 
    <div data-role="controlgroup" align="center"> 
     <a id="mediaplayLink" data-inline="true"><img src='/android_asset/www/images/play.jpg'></a> 
     <a id="mediapauseLink" data-inline="true"><img src='/android_asset/www/images/pause.jpg'></a> 
     <a id="mediastopLink" data-inline="true"><img src='/android_asset/www/images/stop.jpg'></a> 
    </div>  

    <div id="status"></div> 
</div> 

请任何人的帮助?

回答

-1

你可以试试这个代码

public class Media_player extends ListActivity { 
    /** Called when the activity is first created. */ 
    private static final String MEDIA_PATH = new String("/sdcard/"); 
    private List<String> songs = new ArrayList<String>(); 
    private MediaPlayer mp = new MediaPlayer(); 
    private int currentPosition = 0; 

    @Override 
    public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     setContentView(R.layout.main); 

     updateSongList(); 
    } 

    private void updateSongList() { 
     // TODO Auto-generated method stub 
     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); 
     } 
    } 

    protected void onListItemClick(ListView l, View v, int position, long id) { 
     currentPosition = position; 
     playSong(MEDIA_PATH + songs.get(position)); 
    } 

    private void playSong(String string) { 
     // TODO Auto-generated method stub 
     try { 

      mp.reset(); 
      mp.setDataSource(string); 
      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; 
     } else { 
      // Play next song 
      playSong(MEDIA_PATH + songs.get(currentPosition)); 
     } 
    } 
} 

这个其他类

public class Mp3Filter implements FilenameFilter { 

    @Override 
    public boolean accept(File dir, String filename) { 
     // TODO Auto-generated method stub 

      return (filename.endsWith(".mp3")); 

    } 

} 

main.xml中

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" android:orientation="vertical"> 
    <TextView android:text="No songs found on SD Card." android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:layout_width="match_parent" android:id="@+id/android:empty"></TextView> 
    <ListView android:layout_width="match_parent" android:drawSelectorOnTop="false" android:id="@+id/android:list" android:layout_height="286dp"></ListView> 
    <LinearLayout android:layout_width="match_parent" android:id="@+id/linearLayout1" android:layout_height="wrap_content" android:orientation="horizontal"> 
     <Button android:layout_width="wrap_content" android:background="@drawable/play" android:id="@+id/button1" android:layout_height="wrap_content"></Button> 
     <Button android:text="Button" android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> 
    </LinearLayout> 



</LinearLayout> 

song_item.xml

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/text1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="TextView" 
    android:textAppearance="?android:attr/textAppearanceLarge" > 

</TextView> 
+0

这段代码适用于phonegap吗?因为我开发Android的手机使用HTML5,JavaScript,CSS和jQuery的移动 – sone 2012-03-21 06:12:18

+1

-1:该操作是要求一个JavaScript的解决方案,而不是一个Java的 – drodsou 2013-08-03 14:40:03