运用多媒体(通知、拍照、相册、音频、视频)
2017-07-19 本文已影响0人
郑在学_blog
1.通知的基本用法
通知的用法比较灵活,既可以在活动里面创建,也可以在广播接收器里面创建,还可以在服务里面创建。当某个应用程序希望向用户发出一些提示信息,而该应用程序又不在前台运行时,就可以借助通知来实现。
下面通过代码来说明通知的基本用法
public class MainActivity extends AppCompatActivity {
private Button notificationBt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
notificationBt = (Button) findViewById(R.id.notification);
notificationBt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
PendingIntent pd = PendingIntent.getActivity(MainActivity.this,0,intent,0);
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new NotificationCompat.Builder(MainActivity.this)
.setContentIntent(pd)
.setContentTitle("this is content title")
.setContentText("this is content text")
.setAutoCancel(true)
.setDefaults(NotificationCompat.DEFAULT_ALL)
.setPriority(NotificationCompat.PRIORITY_MAX)
.setWhen(System.currentTimeMillis())
.setSmallIcon(R.mipmap.ic_launcher)
.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher))
.build();
manager.notify(1,notification);
}
});
}
}
- 创建通知首先要NotificationManager对通知进行管理,它可以通过 getSystemService获取到实例, getSystemService的参数传入Context.NOTIFICATION_SERVICE就可以了。
- 然后使用Builder构造出Notification对象,里面有很多Set方法,都是比较常用的。
- setContentIntent用于在下拉状态栏后点击通知时要跳转到的页面。需要传入PendingIntent对象,可以通过PendingIntent.getActivity获取到。PendingIntent.getActivity的第三个参数为Intent,即要跳转的意图。需预先创建好。
- setContentTitle用于设置通知的标题。
- setContentText用于设置通知的内容。
- setAutoCancel用于设置点击通知后是否自动在状态栏里移除通知。
- setWhen(System.currentTimeMillis())用于设置通知显示的时间。
- setSmallIcon(R.mipmap.ic_launcher)用于设置通知的小图标。
- setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher))用于设置通知的大图标。
- setDefaults(NotificationCompat.DEFAULT_ALL)用于设置通知出现时的提示音、提示灯光等等。这里用系统默认的。
- setPriority用于设置通知的优先级,优先级分为五级,影响通知的大小、位置等等。最高优先级还会立即显示在屏幕的最上方,以此来引起用户的注意。但使用这类通知时一定要小心,如果不是特别重要的通知,会让用户产生反感,导致应用程序被卸载。
2.拍照和相册
大概的流程
拍照的实现
- 创建存放图片的文件夹
- 将文件夹路径转换为uri
- 隐式启动相机的Activity,uri作为intent的一个参数.
- 拍照结束后,执行onActivityResult(…)获得图片
相册选取图片
- 启动相册Activity
- 选择结束后,执行onActivityResult(…)获得图片
动态权限管理
关键代码
3. 播放多媒体文件
播放音频
3.1 实例化MediaPlayer对象
3.2 动态申请权限
3.3 创建文件对象
File file = new File(Environment.getExternalStorageDirectory(),"music.mp3");//在SD卡中的music.mp3
3.4 指定音频文件的路径
mediaPlayer.serDataSource(file.getpath());
3.5 进入准备状态
mediaPlayer.prepare();
3.6 使用逻辑
- mediaPlayer.isplaying()是否在播放
- mediaPlayer.start()开始
- mediaPlayer.pause()暂停
- mediaPlayer.reset()回到刚创建的状态
- getDuration()获取音频文件的时长
- mediaPlayer.stop()停止播放,无法再播放音频
- mediaPlayer.release()释放资源
3.7 记得在Manifest加权限
播放视频
播放视频与播放音频有很多相同之处,不同之处在于
- 创建VideoView对象
- 指定文件路径的方法是setVideoPath()
- videoView不用准备
- videoView.suspend()重播