Unit8:多媒体
1. 通知 2. 相机 3. 多媒体播放
1.通知
.gradle中:
<!-- 获取声音权限 -->
<uses-permission android:name="android.permission.VIBRATE" />
<!-- 获取服务前台权限 -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
java中:
// 设置点击跳转
Intent intent = new Intent(MainActivity.this, NoticeActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0, intent, 0);
// 1. 启动通知服务,创建Manager进行通知管理
NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
//高版本需要渠道
if(Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O){
//只在Android O之上需要渠道,这里的第一个参数要和下面的channelId一样
NotificationChannel notificationChannel = new NotificationChannel("1","name",NotificationManager.IMPORTANCE_HIGH);
//如果这里用IMPORTANCE_NOENE就需要在系统的设置里面开启渠道,通知才能正常弹出
manager.createNotificationChannel(notificationChannel);
}
// 2. 类构造器构建builder,builder创建通知
Notification notification = new NotificationCompat.Builder(MainActivity.this,"1")
.setContentTitle("这是一个内容标题")
.setContentText("这是一个内容文本")
.setWhen(System.currentTimeMillis()) // 通知被创建的时间:以毫秒为单位
.setSmallIcon(R.mipmap.ic_launcher) // 设置通知小图标
.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher)) // 设置通知的大图标
.setContentIntent(pendingIntent) // 开启延迟加载
.setAutoCancel(true) // 设置通知取消
.setSound(Uri.fromFile(new File("/system/media/audio/ringtones/Ding.ogg"))) // 设置音频
.setVibrate(new long[] {0,1000,1000,1000}) // 设置震动
.setLights(Color.GREEN,1000,1000) // 设置闪烁灯
.setDefaults(NotificationCompat.DEFAULT_ALL) // 默认
.setStyle(new NotificationCompat.BigTextStyle().bigText("ajdlsfdkjhfewtyeiwuhyewuityeuityerioutye")) // 设置长文本
.setStyle(new NotificationCompat.BigPictureStyle().bigPicture(BitmapFactory.decodeResource(getResources(),R.drawable.aaa))) // 设置图片
.setPriority(NotificationCompat.PRIORITY_LOW) // 设置等级
.build();
manager.notify(1,notification); // 给通知设置一个唯一id
}
});
service中:
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Notification notification = new NotificationCompat.Builder(this, "1")
.setContentTitle("this is service")
.setContentText("我是一条服务")
.setSmallIcon(R.drawable.ic_launcher_foreground)
.build();
manager.notify(1,notification);
startForeground(1,notification);
2. 相机
public class MainActivity extends AppCompatActivity {
private MediaPlayer mediaPlayer = new MediaPlayer();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button1 = findViewById(R.id.button1);
Button button2 = findViewById(R.id.button2);
Button button3 = findViewById(R.id.button3);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!mediaPlayer.isPlaying()) {
mediaPlayer.start();
Toast.makeText(MainActivity.this, "开启音乐", Toast.LENGTH_SHORT).show();
}
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mediaPlayer.isPlaying()) {
mediaPlayer.pause();
}
}
});
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mediaPlayer.isPlaying()) {
mediaPlayer.reset();
File file = new File(Environment.getExternalStorageDirectory(), "music.mp3");
try {
mediaPlayer.setDataSource(file.getPath());
mediaPlayer.prepare();
} catch (IOException e) {
e.printStackTrace();
}
}
}
});
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},1);
} else {
// 在根目录下建立一个music.MP3文件
File file = new File(Environment.getExternalStorageDirectory(), "music.mp3");
try {
mediaPlayer.setDataSource(file.getPath());
mediaPlayer.prepare();
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case 1:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
File file = new File(Environment.getExternalStorageDirectory(), "music.mp3");
try {
mediaPlayer.setDataSource(file.getPath());
mediaPlayer.prepare();
} catch (IOException e) {
e.printStackTrace();
}
} else {
Toast.makeText(this, "没有权限使用", Toast.LENGTH_SHORT).show();
finish();
}
break;
default:
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mediaPlayer != null) {
mediaPlayer.stop();
mediaPlayer.release();
}
}
}
3. 播放器
public class MainActivity extends AppCompatActivity {
private VideoView videoView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button1 = findViewById(R.id.button1);
Button button2 = findViewById(R.id.button2);
Button button3 = findViewById(R.id.button3);
videoView = findViewById(R.id.video_view);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!videoView.isPlaying()) {
videoView.start();
}
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (videoView.isPlaying()) {
videoView.pause();
}
}
});
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (videoView.isPlaying()) {
videoView.resume();
}
}
});
if (ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},1);
} else {
// 初始化MediaPlayer
initVideoPath();
}
}
private void initVideoPath() {
File file = new File(Environment.getExternalStorageDirectory(), "movie.mp4");
videoView.setVideoPath(file.getPath());
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case 1:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
initVideoPath();
} else {
Toast.makeText(this, "没有授权无法使用视频播放器", Toast.LENGTH_SHORT).show();
finish();
}
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (videoView != null) {
videoView.suspend();
}
}
}
版权声明:本文为ssy197原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。