Android开发 手机测试运行报错1

写了一个手机音乐视频程序练习一下,但手机测试时显示错误,打不开



https://img-blog.csdn.net/20170808120906304?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzc1Mjc5NDM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center



下面展示一下这个程序,首先是mainActivity_xml的截图


https://img-blog.csdn.net/20170808121146202?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzc1Mjc5NDM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center



然后是mainActivity.java文件代码:



1    package com.example.aptx___4869.myapplication17; 
2     
3    import android.app.Activity; 
4    import android.content.Intent; 
5    import android.content.pm.ActivityInfo; 
6    import android.database.Cursor; 
7    import android.media.MediaPlayer; 
8    import android.net.Uri; 
9    import android.provider.MediaStore; 
10   import android.support.v7.app.AppCompatActivity; 
11   import android.os.Bundle; 
12   import android.view.View; 
13   import android.view.WindowManager; 
14   import android.widget.Button; 
15   import android.widget.CheckBox; 
16   import android.widget.TextView; 
17   import android.widget.Toast; 
18    
19   public class MainActivity extends AppCompatActivity implements 
20           MediaPlayer.OnPreparedListener, 
21           MediaPlayer.OnErrorListener, 
22           MediaPlayer.OnCompletionListener{ 
23    
24       Uri uri; 
25       TextView txvName,txvUri; 
26       boolean isVideo=false;//用来记录是否为视频文件 
27    
28       Button btnPlay,btnStop;//用来引用播放停止按钮 
29       CheckBox ckbLoop;//引用重复播放按钮 
30       MediaPlayer mper;//引用MediaPlayer对象 
31       Toast tos;//引用Toast对象 
32       @Override 
33       protected void onCreate(Bundle savedInstanceState) { 
34           super.onCreate(savedInstanceState); 
35           setContentView(R.layout.activity_main); 
36    
37           setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);//设置屏幕不随手机旋转 
38           setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//设置屏幕直向显示 
39           getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);//设置屏幕不进入休眠 
40    
41           txvName=(TextView)findViewById(R.id.txvName); 
42           txvUri=(TextView)findViewById(R.id.txvUri); 
43    
44    
45           uri=Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.bayern);//默认播放程序内的音乐 
46    
47           txvName.setText("Bayern.mp3"); 
48           txvUri.setText("程序内的音乐:"+uri.toString()); 
49    
50           mper=new MediaPlayer(); 
51           mper.setOnPreparedListener(this); 
52           mper.setOnErrorListener(this); 
53           mper.setOnCompletionListener(this);//3个监听事件,当音乐准备好了,当音乐发生错误,当音乐播放完了 
54           tos=Toast.makeText(this,"",Toast.LENGTH_SHORT); 
55    
56           prepareMusic();//准备播放默认音乐 
57    
58    
59       } 
60    
61        void prepareMusic() { 
62            btnPlay.setText("播放"); 
63            btnPlay.setEnabled(false);//使播放按钮等准备好才能单击 
64            btnStop.setEnabled(false);//使停止按钮不能按 
65    
66            try{ 
67    
68                mper.reset();//重新归零 
69                mper.setDataSource(this,uri);//指定音乐来源 
70                mper.setLooping(ckbLoop.isChecked());//设置是否重复播放 
71                mper.prepareAsync();//要求MediaPlayer准备播放指定音乐 
72            }catch (Exception e){//拦截错误信息并显示 
73    
74                tos.setText("指定音乐文件错误!"+e.toString()); 
75                tos.show(); 
76            } 
77    
78       } 
79    
80       public  void onPick(View v){ 
81    
82           Intent it=new Intent(Intent.ACTION_GET_CONTENT); 
83    
84           if(v.getId()==R.id.btnPickAudio){ 
85    
86               it.setType("audio/*"); 
87               startActivityForResult(it,100); 
88           } 
89           else{ 
90               it.setType("video/*"); 
91               startActivityForResult(it,101); 
92           } 
93       } 
94    
95       protected void onActivityResult(int requestCode,int resultCode,Intent data){ 
96           super.onActivityResult(requestCode,resultCode,data); 
97    
98           if(resultCode== Activity.RESULT_OK){ 
99    
100              isVideo=(requestCode==101);//记录是否选取了视频文件 
101              uri= convertUri(data.getData());//获取选取文件的Uri,并进行格式转换 
102   
103              txvName.setText(uri.getLastPathSegment());//显示文件名 
104              txvUri.setText("文件位置:"+uri.getPath());//显示文件路径 
105              if(!isVideo) prepareMusic(); 
106          } 
107      } 
108   
109       Uri convertUri(Uri uri) { 
110   
111           if(uri.toString().substring(0,7).equals("content")){ 
112   
113               String[] colName={MediaStore.MediaColumns.DATA}; 
114               Cursor cursor=getContentResolver().query(uri,colName,null,null,null); 
115               cursor.moveToFirst(); 
116               uri=Uri.parse("file://"+cursor.getString(0)); 
117               cursor.close(); 
118           } 
119           return uri; 
120      } 
121   
122      @Override 
123      public void onPrepared(MediaPlayer mp) { 
124   
125          btnPlay.setEnabled(true); 
126   
127      } 
128   
129      @Override 
130      public void onCompletion(MediaPlayer mp) { 
131   
132          mper.seekTo(0);//将播放位置归0 
133          btnPlay.setText("播放"); 
134          btnStop.setEnabled(false); 
135   
136      } 
137   
138      @Override 
139      public boolean onError(MediaPlayer mp, int what, int extra) { 
140   
141          tos.setText("发生错误,停止播放!"); 
142          tos.show(); 
143   
144          return true; 
145      } 
146   
147      public void onMpPlay(View v){//按下播放按钮时执行这个函数 
148          if(mper.isPlaying()){ 
149              mper.pause();//如果正在播放就暂停 
150              btnPlay.setText("继续"); 
151          } 
152          else{ 
153              mper.start(); 
154              btnPlay.setText("暂停"); 
155              btnStop.setEnabled(true); 
156          } 
157   
158          if(isVideo){//如果是视频 
159              Intent it=new Intent(this,MediaStore.Video.class);//创建打开video Activity的Intent 
160              it.putExtra("uri",uri.toString()); 
161   
162              startActivity(it);//启动video Activity 
163              return; 
164          } 
165      } 
166   
167      public void onMpStop(View v){//按下停止按钮时执行这个函数 
168          mper.pause(); 
169          mper.seekTo(0); 
170          btnPlay.setText("播放"); 
171          btnStop.setEnabled(false); 
172      } 
173   
174      public void onMpLoop(View v){ 
175   
176          if(ckbLoop.isChecked()) 
177              mper.setLooping(true); 
178          else 
179              mper.setLooping(false); 
180      } 
181   
182      public void onMpBackward(View v){ 
183   
184          if(!btnPlay.isEnabled()) 
185              return;//如果还没有准备好,则不处理 
186   
187          int len=mper.getDuration(); 
188          int pos=mper.getCurrentPosition(); 
189          pos-=10000;//倒退10秒,10000毫秒 
190          if(pos<0) pos=0; 
191          mper.seekTo(pos); 
192          tos.setText("倒退10秒"+pos/1000+"/"+len/1000); 
193          tos.show(); 
194      } 
195   
196      public void onMpForward(View v){ 
197          if(!btnPlay.isEnabled()) 
198              return;//如果还没有准备好,则不处理 
199   
200          int len=mper.getDuration(); 
201          int pos=mper.getCurrentPosition(); 
202          pos+=10000;//倒退10秒,10000毫秒 
203          if(pos>len) pos=len; 
204          mper.seekTo(pos); 
205          tos.setText("倒退10秒"+pos/1000+"/"+len/1000); 
206          tos.show(); 
207   
208      } 
209   
210      protected void onPause(){ 
211          super.onPause(); 
212   
213          if(mper.isPlaying()){ 
214              btnPlay.setText("继续"); 
215              mper.pause(); 
216          } 
217   
218      } 
219   
220      protected void onDestory(){ 
221          mper.release();//释放MediaPlayer对象 
222          super.onDestroy(); 
223      } 
224   
225   
226   
227  } 
228  

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值