首页 android的音乐播放器 出了点有关问题不知道是什么原因有时候出现死循环

android的音乐播放器 出了点有关问题不知道是什么原因有时候出现死循环

举报
开通vip

android的音乐播放器 出了点有关问题不知道是什么原因有时候出现死循环android的音乐播放器 出了点有关问题不知道是什么原因有时候出现死循环 android的音乐播放器 出了点问题不知道是什么原因,有时候出现死循环 12-17 12:04:26.415: INFO/StagefrightPlayer(34): setDataSource('/mnt/sdcard/WonderGirls_TellMe.mp3') 12-17 12:04:26.415: ERROR/MediaPlayer(365): start called in state 2 12-17 12:04:...

android的音乐播放器 出了点有关问题不知道是什么原因有时候出现死循环
android的音乐播放器 出了点有关问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 不知道是什么原因有时候出现死循环 android的音乐播放器 出了点问题不知道是什么原因,有时候出现死循环 12-17 12:04:26.415: INFO/StagefrightPlayer(34): setDataSource('/mnt/sdcard/WonderGirls_TellMe.mp3') 12-17 12:04:26.415: ERROR/MediaPlayer(365): start called in state 2 12-17 12:04:26.415: ERROR/MediaPlayer(365): error (-38, 0) 12-17 12:04:26.415: ERROR/MediaPlayer(365): Error (-38,0) 12-17 12:04:26.425: WARN/InputManagerService(60): Starting input on non-focused client com.android.internal.view.IInputMethodClient$Stub$Proxy@43e388e8 (uid=10032 pid=365) 12-17 12:04:26.445: INFO/StagefrightPlayer(34): setDataSource('/mnt/sdcard/Trouble is a friend.mp3') 12-17 12:04:26.445: ERROR/MediaPlayer(365): start called in state 2 12-17 12:04:26.445: ERROR/MediaPlayer(365): error (-38, 0) 12-17 12:04:26.445: ERROR/MediaPlayer(365): Error (-38,0) 12-17 12:04:26.455: WARN/InputManagerService(60): Starting input on non-focused client com.android.internal.view.IInputMethodClient$Stub$Proxy@43e388e8 (uid=10032 pid=365) 12-17 12:04:26.545: INFO/StagefrightPlayer(34): setDataSource('/mnt/sdcard/sweet dream.mp3') 12-17 12:04:26.675: ERROR/MediaPlayer(365): start called in state 2 12-17 12:04:26.675: ERROR/MediaPlayer(365): error (-38, 0) 12-17 12:04:26.675: ERROR/MediaPlayer(365): Error (-38,0) 12-17 12:04:26.685: WARN/InputManagerService(60): Starting input on non-focused client com.android.internal.view.IInputMethodClient$Stub$Proxy@43e388e8 (uid=10032 pid=365) 12-17 12:04:26.705: INFO/StagefrightPlayer(34): setDataSource('/mnt/sdcard/WonderGirls_TellMe.mp3') 12-17 12:04:26.705: ERROR/MediaPlayer(365): start called in state 2 12-17 12:04:26.715: ERROR/MediaPlayer(365): error (-38, 0) 12-17 12:04:26.715: ERROR/MediaPlayer(365): Error (-38,0) 12-17 12:04:26.745: WARN/InputManagerService(60): Starting input on non-focused client com.android.internal.view.IInputMethodClient$Stub$Proxy@43e388e8 (uid=10032 pid=365) 12-17 12:04:26.755: INFO/StagefrightPlayer(34): setDataSource('/mnt/sdcard/Trouble is a friend.mp3') 12-17 12:04:26.765: ERROR/MediaPlayer(365): start called in state 2 package fly.mediaplayer; import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Random; import android.app.Activity; import android.media.MediaPlayer; import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.os.Message; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.ListView; import android.widget.SeekBar; import android.widget.SimpleAdapter; import android.widget.Toast; /** * 音乐播放器 * */ public class MainActivity extends Activity { private ListView listView; private EditText title; SeekBar bar;// 进度条 private Map String, String listpath = new HashMap String, String ();// 存储音乐名称和绝对路径 MediaPlayer mediaPlayer = new MediaPlayer(); private Handler handler = new UIHandler(); private boolean pause; AdapterView ? parent; int position = -1; int model = 0;// 播放模式 :0 随机 :1 顺序:2 单曲循环 List Map String, Object paths = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 获得视图 listView = (ListView) this.findViewById(R.id.list); title = (EditText) this.findViewById(R.id.title); bar = (SeekBar) this.findViewById(R.id.lenghtBar); Button pause = (Button) this.findViewById(R.id.pause); Button reset = (Button) this.findViewById(R.id.reset); Button stop = (Button) this.findViewById(R.id.stop); Button down = (Button) this.findViewById(R.id.down); Button up = (Button) this.findViewById(R.id.up); Button model = (Button) this.findViewById(R.id.model); // 按钮添加事件 pause.setOnClickListener(new ButtonClickListener()); reset.setOnClickListener(new ButtonClickListener()); stop.setOnClickListener(new ButtonClickListener()); down.setOnClickListener(new ButtonClickListener()); up.setOnClickListener(new ButtonClickListener()); model.setOnClickListener(new ButtonClickListener()); bar.setOnSeekBarChangeListener(new SeekBarChangeListener()); paths = getList();// 获得音乐文件列 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf SimpleAdapter adapter = new SimpleAdapter(this, paths, R.layout.list, new String[] { path , lenght }, new int[] { R.id.path, R.id.lenght }); listView.setAdapter(adapter); listView.setOnItemClickListener(new ListOnClickListener());// 添加点击事 件 new Thread(new BarThread()).start(); } /** * SeekBar重绘 * */ private class UIHandler extends Handler { public void handleMessage(Message msg) {// 运行在主线程中 int size = msg.getData().getInt( seek ); bar.setProgress(size); } } /** * 进度条拖拉监听 * */ private class SeekBarChangeListener implements SeekBar.OnSeekBarChangeListener { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { if (mediaPlayer.isPlaying()) { mediaPlayer.stop(); mediaPlayer.seekTo(seekBar.getProgress()); play(); } } } /** * 进度条线程 * */ private class BarThread implements Runnable { public void run() { bar.setMax(mediaPlayer.getDuration()); while (mediaPlayer.getCurrentPosition() = mediaPlayer .getDuration()) { Message ms = new Message(); ms.getData().putInt( seek , mediaPlayer.getCurrentPosition()); handler.sendMessage(ms); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } } } } /** * 按钮事件监听器 * */ private final class ButtonClickListener implements OnClickListener { @Override public void onClick(View v) { if (position = 0) { switch (v.getId()) { case R.id.pause: pause(); break; case R.id.reset: reset(); break; case R.id.stop: stop(); break; case R.id.down: down(); break; case R.id.up: up(); break; case R.id.model: if (model == 0) { model = 1; ((Button) v).setText(R.string.order); } else if (model == 1) { model = 2; ((Button) v).setText(R.string.loop); } else { model = 0; ((Button) v).setText(R.string.random); } break; } } else { Toast.makeText(getApplicationContext(), R.string.choice, Toast.LENGTH_LONG).show(); } } /** * 下一首 * */ private void down() { if (position + 1 paths.size()) { position++; initMediaplayer(parent, position); play(); } else { stop(); Toast.makeText(getApplicationContext(), R.string.last, Toast.LENGTH_LONG).show(); } } /** * 上一首 * */ private void up() { if (position == 0) { stop(); Toast.makeText(getApplicationContext(), R.string.first, Toast.LENGTH_LONG).show(); } else { position = position - 1; initMediaplayer(parent, position); play(); } } } /** * ListView点击事件监听器 * */ private final class ListOnClickListener implements OnItemClickListener { @Override public void onItemClick(AdapterView ? parent, View view, int position, long id) { initMediaplayer(parent, position); mediaPlayer.setOnCompletionListener(new CompletionListener(parent, position)); setViewAndPosition(parent, position); play();// 播放 } } /** * 存储当前的视图和位置 * */ private void setViewAndPosition(AdapterView ? parent, int position) { this.parent = parent; this.position = position; } /** * 获得随即播放点 * */ private int getRandom(AdapterView ? parent, int position) { position = new Random().nextInt(parent.getChildCount()); return position; } /** * 获得顺序播放点 * */ private int getDown(AdapterView ? parent, int position) { position += 1; if (position parent.getChildCount() - 1) { position = 0; } return position; } /** * 播放完后 0.随即播放 1.顺序播放 2.单曲循环 * */ private class CompletionListener implements MediaPlayer.OnCompletionListener { private int position; private AdapterView ? parent; public CompletionListener(AdapterView ? parent, int position) { super(); this.position = position; this.parent = parent; } @Override public void onCompletion(MediaPlayer mp) { switch (model) { case 0: position = getRandom(parent, position); break; case 1: position = getDown(parent, position); break; case 2: break; } setViewAndPosition(parent, position); initMediaplayer(parent, position); play(); } } /** * 初始化 MediaPlayer * */ private void initMediaplayer(AdapterView ? parent, int position) { @SuppressWarnings( unchecked ) Map String, String map = (Map String, String ) parent .getItemAtPosition(position); String path = map.get( path );// 获得触发事件的Item title.setText(path);// 设置标题 String realPath = listpath.get(path);// 获得绝对路径 mediaPlayer.reset(); try { mediaPlayer.setDataSource(realPath); } catch (Exception e) { e.printStackTrace(); } } /** * 重置 * */ private void reset() { if (mediaPlayer.isPlaying()) { mediaPlayer.seekTo(0); } else { if (title != null) play(); } } /** * 暂停 * */ private void pause() { if (mediaPlayer.isPlaying()) { mediaPlayer.pause(); pause = true; } else { play(); } } /** * 停止 * */ private void stop() { if (mediaPlayer.isPlaying()) { mediaPlayer.stop(); pause = false; } } /** * 播放 * */ private void play() { try { if (!pause) { mediaPlayer.prepare(); } mediaPlayer.start(); } catch (Exception e) { e.printStackTrace(); } } /** * 获取音乐列表 * */ private List Map String, Object getList() { File file = new File(Environment.getExternalStorageDirectory() .toString());// 获得SDCard File[] files = file.listFiles(); int lenght = 0; int m = 0; int s = 0; List Map String, Object list = new ArrayList Map String, Object (); // 获得所有的音乐文件 for (File filepath : files) { if (filepath.getName().endsWith( .mp3 )) { Map String, Object lists = new HashMap String, Object (); try { mediaPlayer.reset(); mediaPlayer.setDataSource(filepath.toString()); mediaPlayer.prepare(); lenght = mediaPlayer.getDuration(); lenght = lenght / 1000; m = lenght / 60; s = lenght - m * 60; } catch (Exception e) { e.printStackTrace(); } lists.put( path , filepath.getName()); lists.put( lenght , String.format( %02d , m) + : + String.format( %02d , s)); list.add(lists); listpath.put(filepath.getName(), filepath.toString()); } } return list; } } 1 楼 zhangxpower 2011-08-05 我也遇到了这个问题。。。不知道怎么解决 。。还是说 要用mediaplayer之前要在 manifest.xml中申请 权限啊, 抱着个错:start called in state 2
本文档为【android的音乐播放器 出了点有关问题不知道是什么原因有时候出现死循环】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_601191
暂无简介~
格式:doc
大小:41KB
软件:Word
页数:17
分类:互联网
上传时间:2017-12-29
浏览量:19