运用多媒体(通知、拍照、相册、音频、视频)

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.拍照和相册

大概的流程

拍照的实现

  1. 创建存放图片的文件夹
  2. 将文件夹路径转换为uri
  3. 隐式启动相机的Activity,uri作为intent的一个参数.
  4. 拍照结束后,执行onActivityResult(…)获得图片

相册选取图片

  1. 启动相册Activity
  2. 选择结束后,执行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加权限

播放视频

播放视频与播放音频有很多相同之处,不同之处在于

  1. 创建VideoView对象
  2. 指定文件路径的方法是setVideoPath()
  3. videoView不用准备
  4. videoView.suspend()重播

你可能感兴趣的:(运用多媒体(通知、拍照、相册、音频、视频))