美文网首页
运用多媒体(通知、拍照、相册、音频、视频)

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

作者: 郑在学_blog | 来源:发表于2017-07-19 12:18 被阅读0次

    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()重播

    相关文章

      网友评论

          本文标题:运用多媒体(通知、拍照、相册、音频、视频)

          本文链接:https://www.haomeiwen.com/subject/ozrxkxtx.html