音频----使用MediaPlayer播放
使用SoundPool播放音频
缺点:不能播放较长的音频,多用于铃声或游戏音
package com.example.practice14;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import android.media.AudioAttributes;
import android.media.SoundPool;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import java.util.HashMap;
public class MainActivity extends AppCompatActivity {
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView listView = findViewById(R.id.listview);
//创建SoundPool对象,并设置音频相关属性
AudioAttributes attr = new AudioAttributes.Builder()//创建音效池属性
.setUsage(AudioAttributes.USAGE_MEDIA)//设置音效的使用场景
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)//设置音效类型
.build();
final SoundPool soundPool = new SoundPool.Builder()
.setAudioAttributes(attr)//设置音效池的属性
.setMaxStreams(10)//设置最多可容纳十个音频流
.build();
//将要播放的音频保存在HashMap对象中
final HashMap<Integer,Integer> soundmap = new HashMap<Integer,Integer>();//创建一个HashMap对象
soundmap.put(0,soundPool.load(this,R.raw.apple,1));
soundmap.put(1,soundPool.load(this,R.raw.apple,1));
soundmap.put(2,soundPool.load(this,R.raw.apple,1));
soundmap.put(3,soundPool.load(this,R.raw.apple,1));
soundmap.put(4,soundPool.load(this,R.raw.apple,1));
soundmap.put(5,soundPool.load(this,R.raw.apple,1));
soundmap.put(6,soundPool.load(this,R.raw.apple,1));
//播放音频
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
//播放所选音频
soundPool.play(soundmap.get(i),1,1,0,0,1);
}
});
}
}
视频----使用VideoView播放
注:一般不使用按钮控制播放,而是使用下面的一个类。
package com.example.practice15;
import androidx.appcompat.app.AppCompatActivity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Environment;
import android.widget.MediaController;
import android.widget.Toast;
import android.widget.VideoView;
import java.io.File;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
VideoView videoView = findViewById(R.id.video);
//加载要播放的视频
File file = new File(Environment.getDownloadCacheDirectory()+"/123.mp4");//获取文件对象
if(file.exists()){
videoView.setVideoPath(file.getAbsolutePath());//指定要播放的视频
}else{
Toast.makeText(MainActivity.this,"要播放的视频文件不存在",Toast.LENGTH_SHORT).show();
}
//控制视频的播放
MediaController mediaController = new MediaController(MainActivity.this);
videoView.setMediaController(mediaController);//产生关联
videoView.requestFocus();//让VideoView获得焦点
videoView.start();//开始播放视频
videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
Toast.makeText(MainActivity.this,"视屏播放完毕",Toast.LENGTH_SHORT).show();
}
});
}
}
视频----使用MediaPlayer和SurfaceView播放
。。。
控制摄像头拍照
。。。。。。
录制视频
。。。。。。