Android studio 小白开发求助帖 如图,按照书上的代码编写了一个音乐播放器,但是加载到手机后播放不了音乐(模拟机上也不行),一开始是出现下图这种情况,无法build.按照网上的说法,把那个targetsdkversion 改成26之后,能够build .但是播放不了音乐。求助啊求助!!谢谢!万分感谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 package com.example.chinayexin.player;import android.app.Activity;import android.content.Intent;import android.content.pm.ActivityInfo;import android.database.Cursor;import android.media.MediaPlayer;import android.net.Uri;import android.os.Bundle;import android.provider.MediaStore;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.view.WindowManager;import android.widget.Button;import android.widget.CheckBox;import android.widget.TextView;import android.widget.Toast;import java.io.IOException;public class MainActivity extends AppCompatActivity implements MediaPlayer.OnPreparedListener, MediaPlayer.OnErrorListener, MediaPlayer.OnCompletionListener{ Uri uri; TextView txvName ,txvUri; boolean isVideo = false; Button btnPlay,btnStop; CheckBox ckbLoop; MediaPlayer mper = new MediaPlayer(); Toast tos; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //设置屏幕不转向 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); txvName =(TextView) findViewById(R.id.txvName); txvUri = (TextView) findViewById(R.id.txvUri); btnPlay=(Button) findViewById(R.id.btnPlay); btnStop= (Button) findViewById(R.id.btnStop); ckbLoop=(CheckBox) findViewById(R.id.ckbLoop); uri= Uri.parse("android.resource://"+getPackageCodePath()+"/"+R.raw.music); txvName.setText("music.mp3"); txvUri.setText("程序内音乐:"+uri.toString()); mper=new MediaPlayer(); mper.setOnPreparedListener(this); mper.setOnErrorListener(this); mper.setOnCompletionListener(this); tos=Toast.makeText(this,"",Toast.LENGTH_SHORT); prepareMusic(); } void prepareMusic() { btnPlay.setText("播放"); btnPlay.setEnabled(false); btnStop.setEnabled(false); try{ mper.reset(); mper.setDataSource(this,uri); mper.setLooping( ckbLoop.isChecked()); mper.prepareAsync(); } catch (IOException e) { tos.setText("指定音乐错误"+e.toString()); tos.show(); } } public void onPick(View view) { Intent it = new Intent(Intent .ACTION_GET_CONTENT); if(view.getId()==R.id.btnPickAudio){ it.setType("audio/*"); startActivityForResult(it,100); } else{ it.setType("Vedio/*"); startActivityForResult(it,101); } } protected void onActivityResult(int requestCode,int resultCode,Intent data){ super.onActivityResult(requestCode,resultCode,data); if(resultCode== Activity.RESULT_OK){ isVideo= (requestCode==101); uri= convertUri(data.getData()); txvName.setText(uri.getLastPathSegment()); txvUri.setText("文件位置:"+uri.getPath()); if(!isVideo)prepareMusic(); } } private Uri convertUri(Uri uri) { if(uri.toString().substring(0,7).equals("content")){ String[] colName = {MediaStore.MediaColumns.DATA}; Cursor cursor = getContentResolver() .query(uri,colName,null,null,null); cursor.moveToFirst(); uri=Uri.parse("file://"+cursor.getString(0)); cursor.close(); } return uri ; } @Override public void onCompletion(MediaPlayer mp) { mper.seekTo(0); btnPlay.setText("播放"); btnStop.setEnabled(false); } @Override public boolean onError(MediaPlayer mp, int what, int extra) { tos.setText("发生错误,停止播放"); tos.show(); return true; } @Override public void onPrepared(MediaPlayer mp) { btnPlay.setEnabled(true); } public void onMpPlay(View view) { if(mper.isPlaying()){ mper.pause(); btnPlay.setText("继续"); } else{ mper.start(); btnPlay.setText("暂停"); btnStop.setEnabled(true); } } public void onMpStop(View view) { mper.pause(); mper.seekTo(0); btnPlay.setText("播放"); btnStop.setEnabled(false); } public void onMpLoop(View view) { if (ckbLoop.isChecked()) mper.setLooping(true); else mper.setLooping(false); } public void onMpForward(View view) { if(!btnPlay.isEnabled())return; int len=mper.getDuration(); int pos=mper.getCurrentPosition(); pos+=10000; if(pos>len)pos=len; mper.seekTo(pos); tos.setText("快进10秒:"+pos/1000+"/"+len/1000); tos.show(); } public void onMpBackward(View view) { if(!btnPlay.isEnabled())return; int len=mper.getDuration(); int pos=mper.getCurrentPosition(); pos-=10000; if(pos<0)pos=0; mper.seekTo(pos); tos.setText("快退10秒"+pos/1000+"/"+len/1000); tos.show(); } @Override protected void onPause() { super.onPause(); if(mper.isPlaying()){ btnPlay.setText("继续"); mper.pause(); } } @Override protected void onDestroy() { mper.release(); super.onDestroy(); }} 提示很明显,在APP的 build.grade 文件里面的 com.android.support:media2:28.0.0 找不到,或许你可以把 28.0.0 版本号降低一点 27.0.2 或者其它 android多线程下载能快吗 查询SIM里的联系人报空指针异常 点击不同的Button跳转到同一个activity但显示的界面不同。 安装Andriod 2.2 SDK遇到以下问题: 新买个安卓手机,擦得内存卡里面的内容说什么就无法转出 请问android那些设置网络代理软件的原理是什么? android中使用service和javamail发送邮件的问题 关于ListActivity!!!!!!!!!!!!!!!! Android 视频显示字幕 急需一个小型计算器的代码,有没有大神给一下 eclipse配置安卓出现这个错误 求大佬帮忙看一下这是怎么了
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.database.Cursor;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.Toast;import java.io.IOException;public class MainActivity extends AppCompatActivity implements
MediaPlayer.OnPreparedListener,
MediaPlayer.OnErrorListener,
MediaPlayer.OnCompletionListener{ Uri uri;
TextView txvName ,txvUri;
boolean isVideo = false;
Button btnPlay,btnStop;
CheckBox ckbLoop;
MediaPlayer mper = new MediaPlayer();
Toast tos;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //设置屏幕不转向
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); txvName =(TextView) findViewById(R.id.txvName);
txvUri = (TextView) findViewById(R.id.txvUri);
btnPlay=(Button) findViewById(R.id.btnPlay);
btnStop= (Button) findViewById(R.id.btnStop);
ckbLoop=(CheckBox) findViewById(R.id.ckbLoop); uri= Uri.parse("android.resource://"+getPackageCodePath()+"/"+R.raw.music);
txvName.setText("music.mp3");
txvUri.setText("程序内音乐:"+uri.toString()); mper=new MediaPlayer();
mper.setOnPreparedListener(this);
mper.setOnErrorListener(this);
mper.setOnCompletionListener(this);
tos=Toast.makeText(this,"",Toast.LENGTH_SHORT); prepareMusic();
} void prepareMusic() {
btnPlay.setText("播放");
btnPlay.setEnabled(false);
btnStop.setEnabled(false);
try{
mper.reset();
mper.setDataSource(this,uri);
mper.setLooping( ckbLoop.isChecked());
mper.prepareAsync();
} catch (IOException e) {
tos.setText("指定音乐错误"+e.toString());
tos.show();
}
}
public void onPick(View view) {
Intent it = new Intent(Intent .ACTION_GET_CONTENT);
if(view.getId()==R.id.btnPickAudio){
it.setType("audio/*");
startActivityForResult(it,100);
}
else{
it.setType("Vedio/*");
startActivityForResult(it,101);
}
}
protected void onActivityResult(int requestCode,int resultCode,Intent data){
super.onActivityResult(requestCode,resultCode,data);
if(resultCode== Activity.RESULT_OK){
isVideo= (requestCode==101);
uri= convertUri(data.getData());
txvName.setText(uri.getLastPathSegment());
txvUri.setText("文件位置:"+uri.getPath()); if(!isVideo)prepareMusic();
}
} private Uri convertUri(Uri uri) {
if(uri.toString().substring(0,7).equals("content")){
String[] colName = {MediaStore.MediaColumns.DATA};
Cursor cursor = getContentResolver()
.query(uri,colName,null,null,null);
cursor.moveToFirst();
uri=Uri.parse("file://"+cursor.getString(0));
cursor.close();
}
return uri ;
} @Override
public void onCompletion(MediaPlayer mp) {
mper.seekTo(0);
btnPlay.setText("播放");
btnStop.setEnabled(false);
} @Override
public boolean onError(MediaPlayer mp, int what, int extra) {
tos.setText("发生错误,停止播放");
tos.show(); return true;
} @Override
public void onPrepared(MediaPlayer mp) {
btnPlay.setEnabled(true);
} public void onMpPlay(View view) {
if(mper.isPlaying()){
mper.pause();
btnPlay.setText("继续");
}
else{
mper.start();
btnPlay.setText("暂停");
btnStop.setEnabled(true);
} } public void onMpStop(View view) {
mper.pause();
mper.seekTo(0);
btnPlay.setText("播放");
btnStop.setEnabled(false);
} public void onMpLoop(View view) {
if (ckbLoop.isChecked())
mper.setLooping(true);
else
mper.setLooping(false);
} public void onMpForward(View view) {
if(!btnPlay.isEnabled())return;
int len=mper.getDuration();
int pos=mper.getCurrentPosition();
pos+=10000;
if(pos>len)pos=len;
mper.seekTo(pos);
tos.setText("快进10秒:"+pos/1000+"/"+len/1000);
tos.show();
} public void onMpBackward(View view) {
if(!btnPlay.isEnabled())return;
int len=mper.getDuration();
int pos=mper.getCurrentPosition();
pos-=10000;
if(pos<0)pos=0;
mper.seekTo(pos);
tos.setText("快退10秒"+pos/1000+"/"+len/1000);
tos.show();
}
@Override
protected void onPause() { super.onPause();
if(mper.isPlaying()){
btnPlay.setText("继续");
mper.pause();
}
}
@Override
protected void onDestroy() {
mper.release();
super.onDestroy();
}
}