java源码Android音乐播放器,java Android音乐播放器_java_开发99编程知识库

我在製作一個音樂播放器 App.I,它有兩個不同的Fragments,SongsList ( songlist.java ) 。 現在,我想將 SongsList.java 與 Mediaplayer.java. 連接起來,我想從 SongsList.java 中選擇一首歌,它會在 Mediaplayer.java. 中播放。 請幫忙 !

SongList.javaimport android.app.Fragment;

import android.content.ContentResolver;

import android.database.Cursor;

import android.net.Uri;

import android.os.Bundle;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ListView;

import java.util.ArrayList;

import java.util.Collections;

import java.util.Comparator;

public class Songlist extends Fragment {

private ArrayList songList;

private ListView songView;

@Override

public View onCreateView(LayoutInflater inflater,

ViewGroup container, Bundle savedInstanceState) {

//Inflate the layout for this fragment

View view=inflater.inflate(

R.layout.songs, container, false);

songView = (ListView)view.findViewById(R.id.song_list);

songList = new ArrayList();

getSongList();

Collections.sort(songList, new Comparator() {

public int compare(Song a, Song b) {

return a.getTitle().compareTo(b.getTitle());

}

});

SongAdapter songAdt = new SongAdapter(getActivity(), songList);

songView.setAdapter(songAdt);

songView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override

public void onItemClick(AdapterView> parent, View view, int position, long id) {

///WHAT TO DO HERE!//

}

});

return view;

}

public void getSongList() {

//retrieve song info

ContentResolver musicResolver = getActivity().getContentResolver();

Uri musicUri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;

Cursor musicCursor = musicResolver.query(musicUri, null, null, null, null);

if(musicCursor!=null && musicCursor.moveToFirst()){

//get columns

int titleColumn = musicCursor.getColumnIndex

(android.provider.MediaStore.Audio.Media.TITLE);

int idColumn = musicCursor.getColumnIndex

(android.provider.MediaStore.Audio.Media._ID);

int artistColumn = musicCursor.getColumnIndex

(android.provider.MediaStore.Audio.Media.ARTIST);

//add songs to list

do {

long thisId = musicCursor.getLong(idColumn);

String thisTitle = musicCursor.getString(titleColumn);

String thisArtist = musicCursor.getString(artistColumn);

songList.add(new Song(thisId, thisTitle, thisArtist));

}

while (musicCursor.moveToNext());

}

}

}

MediaPlayer.java ( 還沒有實現某些按鈕)import android.app.Fragment;

import android.graphics.drawable.Drawable;

import android.media.MediaPlayer;

import android.os.Bundle;

import android.os.Handler;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ImageButton;

import android.widget.SeekBar;

import android.widget.TextView;

import java.util.concurrent.TimeUnit;

public class Mediaplayer extends Fragment{

Drawable shuffle1,back1,play1,next1,repeat1;

ImageButton shuffle,back,play,next,repeat;

TextView start,end,artist,song;

SeekBar songprogress;

private MediaPlayer mediaPlayer;

private double startTime = 0;

private double finalTime = 0;

private Handler myHandler = new Handler();;

@Override

public View onCreateView(LayoutInflater inflater,

ViewGroup container, Bundle savedInstanceState) {

//Inflate the layout for this fragment

View view=inflater.inflate(

R.layout.content_main, container, false);

start=(TextView)view.findViewById(R.id.songCurrentDurationLabel);

end=(TextView)view.findViewById(R.id.songTotalDurationLabel);

song=(TextView)view.findViewById(R.id.song_title);

artist=(TextView)view.findViewById(R.id.songArtist);

shuffle=(ImageButton)view.findViewById(R.id.shuffle);

back=(ImageButton)view.findViewById(R.id.back);

play=(ImageButton)view.findViewById(R.id.play);

next=(ImageButton)view.findViewById(R.id.next);

repeat=(ImageButton)view.findViewById(R.id.repeat);

songprogress = (SeekBar) view.findViewById(R.id.songProgressBar);

mediaPlayer = MediaPlayer.create(getActivity(),R.raw.song);

mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

@Override

public void onCompletion(MediaPlayer mp) {

play1 =

getResources().getDrawable(R.drawable.play);

play.setImageDrawable(play1);

songprogress.setProgress(0);

}

});

play.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

songprogress.setClickable(true);

if(!mediaPlayer.isPlaying()) {

mediaPlayer.start();

finalTime = mediaPlayer.getDuration();

startTime = mediaPlayer.getCurrentPosition();

play1 =

getResources().getDrawable(R.drawable.pause);

play.setImageDrawable(play1);

songprogress.setMax((int) finalTime);

end.setText(String.format("%d.%d",

TimeUnit.MILLISECONDS.toMinutes((long) finalTime),

TimeUnit.MILLISECONDS.toSeconds((long) finalTime) -

TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes((long) finalTime)))

);

start.setText(String.format("%d.%d",

TimeUnit.MILLISECONDS.toMinutes((long) startTime),

TimeUnit.MILLISECONDS.toSeconds((long) startTime) -

TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes((long) startTime)))

);

songprogress.setProgress((int) startTime);

myHandler.postDelayed(UpdateSongTime, 100);

}else{

mediaPlayer.pause();

play1 =

getResources().getDrawable(R.drawable.play);

play.setImageDrawable(play1);

}

}

});

songprogress.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

@Override

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

if(mediaPlayer!= null && fromUser){

mediaPlayer.seekTo(progress);

}

}

@Override

public void onStartTrackingTouch(SeekBar seekBar) {

}

@Override

public void onStopTrackingTouch(SeekBar seekBar) {

}

});

return view;

}

private Runnable UpdateSongTime = new Runnable() {

public void run() {

startTime = mediaPlayer.getCurrentPosition();

start.setText(String.format("%d.%d",

TimeUnit.MILLISECONDS.toMinutes((long) startTime),

TimeUnit.MILLISECONDS.toSeconds((long) startTime) -

TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.

toMinutes((long) startTime)))

);

songprogress.setProgress((int)startTime);

myHandler.postDelayed(this, 100);

}

};

}

SongAdapter.javaimport android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import java.util.ArrayList;

import android.content.Context;

import android.view.LayoutInflater;

import android.widget.LinearLayout;

import android.widget.TextView;

public class SongAdapter extends BaseAdapter {

private ArrayList songs;

private LayoutInflater songInf;

public SongAdapter(Context c, ArrayList theSongs){

songs=theSongs;

songInf=LayoutInflater.from(c);

}

@Override

public int getCount() {

return songs.size();

}

@Override

public Object getItem(int position) {

return null;

}

@Override

public long getItemId(int position) {

return 0;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

//map to song layout

LinearLayout songLay = (LinearLayout)songInf.inflate

(R.layout.songlistitem, parent, false);

//get title and artist views

TextView songView = (TextView)songLay.findViewById(R.id.song_title);

TextView artistView = (TextView)songLay.findViewById(R.id.song_artist);

//get song using position

Song currSong = songs.get(position);

//get title and artist strings

songView.setText(currSong.getTitle());

artistView.setText(currSong.getArtist());

//set position as tag

songLay.setTag(position);

return songLay;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值