媒体播放器在我的代码中不起作用
media player does not work in my code
带音频的列表视图无法播放
你好,你好吗?
我正在尝试制作音频列表视图,一切似乎都按预期进行,但是当我单击列表项时,音频应该会重现,但它却出现了 "the app stopped working" 我不明白我的代码有什么问题,有人可以提供帮助我有时会伤脑筋,但我无法解决这个问题。下面是 logcat,然后是我的代码,请有人帮我让它工作。
-谢谢
MainActivity.class
public class MainActivity extends AppCompatActivity {
ListView lv;
MediaPlayer mp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.memes_main);
lv = findViewById(R.id.lv);
mp = new MediaPlayer();
ArrayList<memes> item = new ArrayList<>();
item.add(new memes("Gemidão", R.raw.gemidaoremix));
item.add(new memes("Nunca nem vi", R.raw.nuncanemvi));
ArrayAdapter<memes> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, item);
lv.setAdapter(adapter);
lv.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, item));
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view,
int position, long id) {
playSong(position);
}
});
}
public void playSong(int songIndex) {
mp.reset();
int[] resID = new int[0];
mp = MediaPlayer.create(this, resID[songIndex]);
mp.start();
}
@Override
public void onDestroy() {
super.onDestroy();
mp.release();
}
}
memes.class
public class memes{
private String nome;
private int resID;
memes(String nome, int resID){
this.nome = nome;
this.resID = resID;
}
public String getNome(){
return nome;
}
public int getResId(){
return resID;
}
@Override
public String toString(){
return nome;
}
}
使用如下代码:
MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.song);
播放:
mediaPlayer.start();
暂停:
mediaPlayer.pause();
您的代码存在的问题是您声明了一个单独的未填充原始资源数组。
int[] resID = new int[0];
mp = MediaPlayer.create(this, resID[songIndex]);
解决方案
由于您使用 arraylist 来填充 ListView,因此您需要从 Arraylist 本身获取资源。解决方案将是这样的:
public class MainActivity extends AppCompatActivity {
ListView lv;
MediaPlayer mp;
ArrayList<Memes> item;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = findViewById(R.id.lv);
mp = new MediaPlayer();
item = new ArrayList<>();
item.add(new Memes("Gemidão", R.raw.gemidaoremix));
item.add(new Memes("Nunca nem vi", R.raw.nuncanemvi));
ArrayAdapter<Memes> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, item);
lv.setAdapter(adapter);
lv.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, item));
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view,
int position, long id) {
playSong(position);
}
});
}
public void playSong(int songIndex) {
mp.reset();
mp = MediaPlayer.create(this, item.get(songIndex).getResId());
mp.start();
}
@Override
public void onDestroy() {
super.onDestroy();
mp.release();
}
}
您需要处理资源文件,您可以创建另一种方法来填充您的歌曲列表,您的问题来自 int[] resID = new int[0];
您使用的是空数组。
添加
int[] songs={R.raw.gemidaoremix,R.raw.nuncanemvi};
将songs
用作播放列表
更新
public class MainActivity extends AppCompatActivity {
ListView lv;
MediaPlayer mp;
int[] songs={R.raw.gemidaoremix,R.raw.nuncanemvi};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = findViewById(R.id.lv);
mp = new MediaPlayer();
ArrayList<memes> item = new ArrayList<>();
item.add(new memes("Gemidão", R.raw.gemidaoremix));
item.add(new memes("Nunca nem vi", R.raw.nuncanemvi));
ArrayAdapter<memes> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, item);
lv.setAdapter(adapter);
lv.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, item));
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view,
int position, long id) {
playSong(position);
}
});
}
public void playSong(int songIndex) {
mp.reset();
mp = MediaPlayer.create(this, songs[songIndex]);
mp.start();
}
@Override
public void onDestroy() {
super.onDestroy();
mp.release();
}
}
带音频的列表视图无法播放
你好,你好吗? 我正在尝试制作音频列表视图,一切似乎都按预期进行,但是当我单击列表项时,音频应该会重现,但它却出现了 "the app stopped working" 我不明白我的代码有什么问题,有人可以提供帮助我有时会伤脑筋,但我无法解决这个问题。下面是 logcat,然后是我的代码,请有人帮我让它工作。 -谢谢
MainActivity.class
public class MainActivity extends AppCompatActivity {
ListView lv;
MediaPlayer mp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.memes_main);
lv = findViewById(R.id.lv);
mp = new MediaPlayer();
ArrayList<memes> item = new ArrayList<>();
item.add(new memes("Gemidão", R.raw.gemidaoremix));
item.add(new memes("Nunca nem vi", R.raw.nuncanemvi));
ArrayAdapter<memes> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, item);
lv.setAdapter(adapter);
lv.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, item));
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view,
int position, long id) {
playSong(position);
}
});
}
public void playSong(int songIndex) {
mp.reset();
int[] resID = new int[0];
mp = MediaPlayer.create(this, resID[songIndex]);
mp.start();
}
@Override
public void onDestroy() {
super.onDestroy();
mp.release();
}
}
memes.class
public class memes{
private String nome;
private int resID;
memes(String nome, int resID){
this.nome = nome;
this.resID = resID;
}
public String getNome(){
return nome;
}
public int getResId(){
return resID;
}
@Override
public String toString(){
return nome;
}
}
使用如下代码:
MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.song);
播放:
mediaPlayer.start();
暂停:
mediaPlayer.pause();
您的代码存在的问题是您声明了一个单独的未填充原始资源数组。
int[] resID = new int[0];
mp = MediaPlayer.create(this, resID[songIndex]);
解决方案
由于您使用 arraylist 来填充 ListView,因此您需要从 Arraylist 本身获取资源。解决方案将是这样的:
public class MainActivity extends AppCompatActivity {
ListView lv;
MediaPlayer mp;
ArrayList<Memes> item;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = findViewById(R.id.lv);
mp = new MediaPlayer();
item = new ArrayList<>();
item.add(new Memes("Gemidão", R.raw.gemidaoremix));
item.add(new Memes("Nunca nem vi", R.raw.nuncanemvi));
ArrayAdapter<Memes> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, item);
lv.setAdapter(adapter);
lv.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, item));
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view,
int position, long id) {
playSong(position);
}
});
}
public void playSong(int songIndex) {
mp.reset();
mp = MediaPlayer.create(this, item.get(songIndex).getResId());
mp.start();
}
@Override
public void onDestroy() {
super.onDestroy();
mp.release();
}
}
您需要处理资源文件,您可以创建另一种方法来填充您的歌曲列表,您的问题来自 int[] resID = new int[0];
您使用的是空数组。
添加
int[] songs={R.raw.gemidaoremix,R.raw.nuncanemvi};
将songs
用作播放列表
更新
public class MainActivity extends AppCompatActivity {
ListView lv;
MediaPlayer mp;
int[] songs={R.raw.gemidaoremix,R.raw.nuncanemvi};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = findViewById(R.id.lv);
mp = new MediaPlayer();
ArrayList<memes> item = new ArrayList<>();
item.add(new memes("Gemidão", R.raw.gemidaoremix));
item.add(new memes("Nunca nem vi", R.raw.nuncanemvi));
ArrayAdapter<memes> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, item);
lv.setAdapter(adapter);
lv.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, item));
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view,
int position, long id) {
playSong(position);
}
});
}
public void playSong(int songIndex) {
mp.reset();
mp = MediaPlayer.create(this, songs[songIndex]);
mp.start();
}
@Override
public void onDestroy() {
super.onDestroy();
mp.release();
}
}