尝试编写一个程序,其中点击listItem想要从raw播放特定的音频。但每次点击都会播放而不会停止上一首曲目。
package com.vaishnavismeclass.tiruppavai;
import java.io.IOException;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
ListView lv;
Context c = getApplicationContext();
public static MediaPlayer mp = new MediaPlayer();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.listView1);
lv.setAdapter(new VcAdapter(this));
//
// to handle onclicklistener
//
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parentAdapter, View view, int position,long id) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "Position ["+position+"]", Toast.LENGTH_SHORT).show();
//Uri pasuram01 = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.pasuram01);
//Uri pasuram02 = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.pasuram02);
//int resID = 0;
playMyMusic(position, mp);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void playMyMusic(int songNumber, MediaPlayer mp) {
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
//
//
// assign the music
//
//
Toast.makeText(MainActivity.this, "Position for play is ["+songNumber+"]", Toast.LENGTH_SHORT).show();
switch (songNumber) {
case 0:
mp = MediaPlayer.create(this, R.raw.taniyan01);
//mp.start();
break;
case 1:
mp = MediaPlayer.create(this, R.raw.taniyan02);
//mp.start();
break;
case 2:
mp = MediaPlayer.create(this, R.raw.taniyan03);
//mp.start();
break;
case 3:
mp = MediaPlayer.create(this, R.raw.pasuram01);
;
break;
case 4:
mp = MediaPlayer.create(this, R.raw.pasuram02);
;
break;
}
//mp.prepare();
Toast.makeText(MainActivity.this, "Playing ["+songNumber+"]", Toast.LENGTH_SHORT).show();
if (mp!=null && mp.isPlaying()) {
Toast.makeText(MainActivity.this, "Player is playing", Toast.LENGTH_SHORT).show();
mp.stop();
mp.reset();
mp.release();
}
else
{
mp.start();
}
Toast.makeText(MainActivity.this, "Played ["+songNumber+"]", Toast.LENGTH_SHORT).show();
}
}
class SingleRow {
String pasuram;
int img;
SingleRow(String pasuram, int img) {
this.pasuram = pasuram;
this.img = img;
}
}
class VcAdapter extends BaseAdapter {
ArrayList<SingleRow> list;
Context context;
VcAdapter(Context c) {
context = c;
list = new ArrayList<SingleRow>();
// get resources using context
Resources res = c.getResources();
String[] pasuram_en = res.getStringArray(R.array.pasurams_ta);
//String[] pasuram_ta = res.getStringArray(R.array.pasurams_ta);
//String[] pasuram_te = res.getStringArray(R.array.pasurams_te);
int[] imgs = { R.drawable.p1, R.drawable.p1, R.drawable.p1,
R.drawable.p1, R.drawable.p2, R.drawable.p3, R.drawable.p4,
R.drawable.p5, R.drawable.p6, R.drawable.p7, R.drawable.p8,
R.drawable.p9, R.drawable.p10, R.drawable.p11, R.drawable.p12,
R.drawable.p13, R.drawable.p14, R.drawable.p15, R.drawable.p16,
R.drawable.p17, R.drawable.p18, R.drawable.p19, R.drawable.p20,
R.drawable.p21, R.drawable.p22, R.drawable.p23, R.drawable.p24,
R.drawable.p25, R.drawable.p26, R.drawable.p27, R.drawable.p28,
R.drawable.p29, R.drawable.p30, R.drawable.p1, R.drawable.p1, R.drawable.ic_launcher };
for (int i = 0; i < pasuram_en.length; i++) {
// list.add(new SingleRow(pasuram_en[i], imgs[i]));
list.add(new SingleRow(pasuram_en[i], imgs[i]));
}
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public Object getItem(int i) {
// TODO Auto-generated method stub
return list.get(i);
}
@Override
public long getItemId(int i) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
// TODO Auto-generated method stub
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row = inflater.inflate(R.layout.single_row, viewGroup, false);
TextView pasuram = (TextView) row.findViewById(R.id.textView1);
ImageView img = (ImageView) row.findViewById(R.id.imageView1);
SingleRow temp = list.get(i);
pasuram.setText(temp.pasuram);
img.setImageResource(temp.img);
return row;
}
}
即使当前播放音频,MediaPlayer.IsPlaying()也会返回false。
提前致谢。
答案 0 :(得分:0)
将MediaPlayer声明为静态。
public static MediaPlayer mp;