色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

java - 自己制作一個(gè)視頻播放器,遇到問題,用的是內(nèi)置surfaceview類,具體看代碼!

瀏覽:178日期:2024-02-04 13:33:33

問題描述

public class Main_activity extends AppCompatActivity { private ImageButton button; @Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button=(ImageButton) findViewById(R.id.imageButton);button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {Intent intent=new Intent(Main_activity.this,MyListView.class);startActivity(intent); }}); }}

public class MyListView extends AppCompatActivity { private ListView listView; private List<String> data = new ArrayList<String>(); @Override public void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);listView = new ListView(this);data=getData();listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,data));setContentView(listView);listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) {Intent intent=new Intent(MyListView.this,Surfaceview.class);intent.putExtra('datap',data.get(position));startActivity(intent);finish(); }}); } private List<String> getData(){List<String> data = new ArrayList<String>();ContentResolver c=getContentResolver();Cursor cur = c.query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, null,null, null,null);int num=cur.getCount();cur.moveToFirst();for (int i=0;i<num;i++){ String datapath=cur.getString(cur.getColumnIndex(MediaStore.Video.Media.DATA)); data.add(datapath); cur.moveToNext();}return data; }}

public class Surfaceview extends AppCompatActivity { MediaPlayer mp; SurfaceView sv; Handler mHandler; Runnable mRunnable; @Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.surfacexml);Intent intent=this.getIntent();final String datapath=intent.getStringExtra('datap');sv=(SurfaceView)findViewById(R.id.surfaceView2);final LinearLayout linearLayout=(LinearLayout)findViewById(R.id.test);mp=new MediaPlayer();final Button bplay=(Button)findViewById(R.id.play);Button bbefore=(Button)findViewById(R.id.before);Button bnext=(Button)findViewById(R.id.next);final SeekBar seekbar=(SeekBar)findViewById(R.id.seekbar); sv.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { mHandler.removeCallbacks(mRunnable); linearLayout.setVisibility(View.VISIBLE); mHandler.postDelayed(mRunnable,4000); return false; } });mHandler= new Handler();mRunnable = new Runnable() { @Override public void run() {linearLayout.setVisibility(View.INVISIBLE); }};try { mp.setDataSource(datapath);} catch (IOException e) { e.printStackTrace();}mp.setDisplay(sv.getHolder());try { mp.prepare();} catch (IOException e) { e.printStackTrace();}mp.start();Timer timer=new Timer();timer.schedule(new TimerTask() { @Override public void run() {float x=mp.getDuration();float i=mp.getCurrentPosition();float p=i/x*100;int g=(int)p; seekbar.setProgress(g); }},0, 500);seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { float x=seekBar.getProgress();float a=mp.getDuration();float i=x/100*a;int j=(int)i;mp.pause();mp.seekTo(j);mp.start(); }});bplay.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mp.isPlaying()) { mp.pause(); bplay.setText('play'); } else { mp.start(); bplay.setText('pause'); } }}); }}

以上是3個(gè)主類,我的思路是主頁面一個(gè)按鈕,然后點(diǎn)擊就進(jìn)入MyListView,就是用list類現(xiàn)實(shí)本機(jī)里所有視頻文件,然后點(diǎn)擊一個(gè)item,在進(jìn)入Surfaceview,這是主播放的界面,但是前面都還好,就是最后這個(gè)surface進(jìn)不去,我在努力思考原因,各種調(diào)試,但是還是沒找出原因,錯(cuò)誤如下:

E/AndroidRuntime: FATAL EXCEPTION: main Process: yuyu.mymedia, PID: 2524 java.lang.RuntimeException: Unable to start activity ComponentInfo{yuyu.mymedia/yuyu.mymedia.Surfaceview}: java.lang.IllegalArgumentException: The surface has been released at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2947) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3008) at android.app.ActivityThread.-wrap14(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6688) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358) Caused by: java.lang.IllegalArgumentException: The surface has been released at android.media.MediaPlayer._setVideoSurface(Native Method) at android.media.MediaPlayer.setDisplay(MediaPlayer.java:795) at yuyu.mymedia.Surfaceview.onCreate(Surfaceview.java:66) at android.app.Activity.performCreate(Activity.java:6912) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2900) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3008) at android.app.ActivityThread.-wrap14(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1650) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6688)

然后調(diào)試的時(shí)候,當(dāng)運(yùn)行到sv.setOnTouchListener(new View.OnTouchListener()這句以及后面的mp,handle等,會(huì)出現(xiàn)沒有sv,mp,這些的實(shí)例,十分不理解,怎么會(huì)沒有實(shí)例?

問題解答

回答1:

會(huì)不會(huì)是surfaceHolder還沒準(zhǔn)備好的時(shí)候,就調(diào)用了MediaPlayer的start()方法。

回答2:

自己頂一下,怎么沒有人。。。

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 欧洲免费无线码二区5 | 她也啪在线视频精品网站 | 福利视频黄 | 国产做国产爱免费视频 | 办公室紧身裙丝袜av在线 | 中国一级毛片录像 | 大尺度福利视频在线观看网址 | 欧美日韩成人在线视频 | 久久精品免费一区二区视 | 国产成人精品无缓存在线播放 | 国产精品自在线 | 99香蕉网| 免费一级a毛片在线播 | 亚洲国产成人久久综合野外 | 欧美日韩亚洲综合在线一区二区 | 欧美日韩一级大片 | 精品久久精品久久 | 亚洲国产国产综合一区首页 | 美女个护士一级毛片亚洲 | 91福利国产在线观一区二区 | 一级毛片在线视频 | aaa色| 免费a级 | 国产一级做a爰片... | 欧美午夜免费毛片a级 | 欧美在线1| 国产cao| 欧美色视频日本片免费高清 | 男人的天堂久久 | 很黄很暴力深夜爽爽无遮挡 | 免费观看一级特黄三大片视频 | 国产一级在线观看www色 | 国产三级做爰在线观看∵ | 特黄aa级毛片免费视频播放 | 成人免费一区二区三区在线观看 | 亚洲清纯自偷自拍另类专区 | 玖草在线资源 | 99国产精品免费视频观看 | 午夜大片免费男女爽爽影院久久 | 欧美日韩另类视频 | 三级韩国一区久久二区综合 |