分享好友 最新动态首页 最新动态分类 切换频道
Android通知与多媒体处理详解手机媒体「Android通知与多媒体处理详解」
2025-04-02 13:07

1.1通知的使用方法

首先需要一个NotificationManager对通知进行管理,通过调用Context的getSystemService()方法获取,此方法接收一个字符串参数用于确定获取系统的某个服务,传入Context.NOTIFICATION_SERVICE即可。

:NotificationManager manager=(NotificationManager

       getSystemService(Context.NOTIFICATION_SERVICE

接着需要用NotificationCompat类的Builder构造器来创建Notification对象

:Notification notification = new Notification.Builder(context).build();

在最终的build() 方法之前连缀任意多的设置方法来创建一个丰富的Notification 对象,基本设置有

Notification notification = new NotificationCompat.Builder(Context context,String channelId)

.setContentTitle("This is content title")    //指定通知的标题内容

.setContentText("This is content text")   //指定通知的正文内容

.setWhen(System.currentTimeMillis())   //指定通知被创建的时间,以毫秒为单位

.setSmallIcon(R.drawable.small_icon)   //设置通知的小图标,只能使用纯alpha图层的图片进行设置

.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.large_icon))  //大图标

.build();

要调用NotificationManager的notify() 方法就可以让通知显示出来了。notify() 方法接收两个参数,第一个参数是id ,要保证为每个通知所指定的id都是不同的;第二个参数则是Notification对象,这里直接将我们刚刚创建好的Notification 对象传入即可。

:manager.notify(1, notification);

代码修改

                String id ="channel_1";    //channel的id
                String description = "123";    //channel的描述信息
                int importance = NotificationManager.IMPORTANCE_LOW;   //channel的重要性
                NotificationChannel channel = new NotificationChannel("channel_1","123", importance);
                NotificationManager manager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
                manager.createNotificationChannel(channel);
                Notification notification=new Notification.Builder(this,"channel_1")

.......

1.2 PendingIntent

指明某一个“意图”,可以用于启动活动、启动服务及发送广播(倾向于在某个合适的时机去执行某个动作,也可以把PendingIntent简单地理解为延迟执行的Intent。

根据需求选择用getActivity() 方法、getBroadcast() 方法,还是getService() 方法

这几个方法所接收的参数相同

第一个参数:Context

第二个参数:通常传入0

第三个参数:一个Intent对象,通过这个对象构建出PendingIntent的“意图”

第四个参数:用于确定PendingIntent的行为,有FLAG_ONE_SHOT 、FLAG_NO_CREATE 、FLAG_CANCEL_CURRENT 和 FLAG_UPDATE_CURRENT,通常传入0

Notification.Builder 这个构造器还可以再连缀一个setContentIntent() 方法,接收的参数正是一 个PendingIntent 对象(pi)。这里就可以通过PendingIntent构建出一个延迟执行的“意图”, 当用户点击这条通知时就会执行相应的逻辑。

Intent intent = new Intent(this, NotificationActivity.class);

PendingIntent pi = PendingIntent.getActivity(this, 0, intent, 0);

.setContentIntent(pi)

1.3通知图标消失

在Notification.Builder中再连缀一个setAutoCancel(true)方法

显式地调用NotificationManager的cancel() 方法将它取消

NotificationManager manager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

manager.cancel(1);  //每条通知指定的id,在notify()方法中

1.4通知的进阶技巧

.setSound(Uri.fromFile(new File("/system/media/audio/ringtones/Luna.ogg")))

//设置通知提示音
.setVibrate(new long[]{0,1000,1000,1000})

//设置振动,需要添加权限  <uses-permission android:name="android.permission.VIBRATE"/>
.setLights(Color.GREEN,1000,1000)

//设置前置LED灯进行闪烁,第一个为颜色值,第二个为亮的时长,第三个为暗的时长
.setDefaults(NotificationCompat.DEFAULT_ALL)  //使用默认效果,会根据手机当前环境播放铃声, 是否振动

1.5通知的高级功能

setStyle() 方法接收一个NotificationCompat.Style 参数,这个参数就是用来构建具体的富文本信息的,如长文字、图片

:长文字   .setStyle(new Notification.BigTextStyle().bigText("乌拉乌拉乌拉可以看到,通知内容是无法显示完整的,多余的部分会用省略号来代替。其实这也很正常"))

大图片  .setStyle(new Notification.BigPictureStyle().bigPicture (BitmapFactory.decodeResource(getResources(), R.drawable.big_image)))

setPriority() 方法,它可以用于设置通知的重要程度

一共有五个常量值可选

PRIORITY_DEFAULT 表示默认的重要程度,和不设置效果是一样的;PRIORITY_MIN 表示最低的重要程度,系统可能只会在特定的场景才显示这条通知,比如用户下拉状态栏的时 候

PRIORITY_MIN 表示最低的重要程度,系统可能只会在特定的场景才显示这条通知,比如用户下拉状态栏的时候

PRIORITY_LOW 表示较低的重要程度,系统可能会将这类通知缩小,或改变其显示的顺序,将其排在更重要的通知之后

PRIORITY_HIGH 表示较高的重要程度,系统可能会将这类 通知放大,或改变其显示的顺序,将其排在比较靠前的位置

PRIORITY_MAX 表示最高的重要 程度,这类通知消息必须要让用户立刻看到,甚至需要用户做出响应操作。

: .setPriority(NotificationCompat.PRIORITY_MAX)

2.1调用摄像头拍照

①首先这里创建了一个File对象,用于存放摄像头拍下的图片,这里我们把图片命名为 output_image.jpg,并将它存放在手机SD卡的应用关联缓存目录,就是指SD卡中专门用于存放当前应用缓存数据的位置;调用getExternalCacheDir() 方法可以得到这个目录,具体的路径是/sdcard/Android/data//cache

getExternalCacheDir()方法接收3个参数,第一个参数要求传入Context 对象,第二个参数可以是任意唯一的字符串,第三个参数则是我们刚刚创建的File对象

②接着会进行一个判断,如果运行设备的系统版本低于Android 7.0,就调用Uri的fromFile() 方 法将File 对象转换成Uri 对象,这个Uri对象标识着output_image.jpg这张图片的本地真实路径。否则,就调用FileProvider的getUriForFile() 方法将File 对象转换成一个封装过的Uri 对象

③接下来构建出了一个Intent对象,并将这个Intent 的action指定为android.media.action.IMAGE_CAPTURE ,再调用Intent的putExtra()方法指定图片的输出地址,这里填入刚刚得到的Uri对象

④最后调用startActivityForResult()来启动活动

刚才使用startActivityForResult()来启动活动的,因此拍完照后会有结果返回到onActivityResult() 方法中。如果发现拍照成功,就可以调用BitmapFactory的decodeStream()方法将output_image.jpg这张照片解析成Bitmap对象,然后把它设置到ImageView中显示出来。

2.2从相册中选择照片

2.3播放多媒体文件

在Android中播放音频文件一般都是使用MediaPlayer 类来实现的

 ①首先需要创建出一个MediaPlayer对象

private MediaPlayer mediaPlayer = new MediaPlayer();

②然后调用setDataSource()方法来设置音频文件的路径

mediaPlayer.setDataSource(file.getPath());

③再调用prepare()方法使MediaPlayer进入到准备状态

mediaPlayer.prepare();

④接下来调用start()方法就可以开始播放音频,调用pause()方法就会暂停播放,调用reset()方法就会停止播放

mediaPlayer.start();    mediaPlayer.pause();      mediaPlayer.reset();

⑤在AndroidManifest.xml文件中声明权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

2.4播放视频

主要是使用VideoView类来实现的

 这部分代码和前面播放音频的代码非常类似

①首先在onCreate()方法中同样进行了一个运行时权限处理,因为视频文件将会放在SD卡上

②当用户同意授权了之后就会调用initVideoPath()方法来设置视频文件的路径,这里我们需要事先在SD卡的根目录下放置一个名为movie.mp4的视频文件

③当点击Play按钮时会进行判断,如果当前并没有正在播放视频,则调用start()方法开始播放;当点击Pause按钮时会判断,如果当前视频正在播放,则调用pause()方法暂停播放;当点击Replay按钮时会判断,如果当前视频正在播放,则调用resume()方法从头播放视频;最后在onDestroy()方法中,我们还需要调用一下suspend()方法,将VideoView所占用的资源释放掉。

最新文章
突破“爽感至上”,微短剧如何探索精品化之路
中国网络视听节目服务协会近日发布的《中国网络视听发展研究报告(2025)》显示,截至2024年12月,微短剧用户规模达6.62亿,半年增长率高达14.8%;仅半年时间,微短剧独立应用的人均单日使用时长从90分钟涨到101分钟,已追平即时通讯。在这
更多360清理大师安卓历史版本(10个)360手机清理大师「更多360清理大师安卓历史版本(10个)」
360清理大师一键清理手机软件,给自己的手机一个清爽安静且安全的运行环境吧。360清理大师,一般又称360清理垃圾,360清理垃圾大师,360清理大师一键清理,360清理大师一键清理加速。 360清理大师:更简单,更畅快!6亿用户信赖的手机清理APP
经济前景悲观,菲律宾民众对现任政府支持率骤降至15%,政治倾向出现重大转变
据菲律宾媒体4月1日报道,根据最新发布的“Pahayag”第一季度民调结果显示,菲律宾成年人对现任马科斯政府的反对情绪在今年前三个月显著加剧。Publicus Asia机构周一公布的数据表明,民众政治倾向出现重大转变,对国家现状、领导方向及经济
北京多场户外赛事因大风延期,亦庄半马:已开始领物,暂无延期通知
4月10日10时30分,北京发布了近10年首个全市大风橙色预警,局部地区风级可达13级以上。据不完全统计,北京多场户外运动因大风延期。九派新闻记者注意到,为迎接北京周末大风,部分市民已经做好准备。其中有人称,为防止高空坠物,打算周五
长三角九城检察机关:合聚检力 呵护创新
会上,九城检察机关共同签署了《长三角G60科创走廊知识产权检察保护中心关于在侵犯知识产权犯罪案件中违法所得数额认定的意见》《长三角G60科创走廊沿线九城检察机关合作培养人才协议》,进一步规范长三角G60科创走廊知识产权检察保护中心
安卓手机如何安装两个微信(微信分身)?详细教程来了一个手机可以下载两个微信吗「安卓手机如何安装两个微信(微信分身)?详细教程来了」
要在手机上安装两个微信帐号,需要使用微信的“双开”功能或者下载第三方应用克隆软件,例如“ ”,才能同时登录两个微信帐号。如何安装两个微信账号(安卓微信克隆版)准备1. 确保您的手机已获取系统权限并已 root (某些设备可能不需要 r
林彦:修辞立其诚 | 创作谈
这样的儿童文学我写不出来,但是《九歌》与我早年专注写少年时代的敏感和孤独相比,是有一些改变的。2004年,我动笔写这个故事,主要人物是以数学家陆家羲先生为原型,写一个父亲因为一场意外的火灾收养了5个孩子,着笔还在往痛与深的方向
骑士享家员工端排班软件手机版「骑士享家员工端」
分类:办公大小:271MB更新时间:2025-01-27分类:办公大小:108MB更新时间:2023-11-15分类:办公大小:62.1MB更新时间:2025-01-17分类:办公大小:105MB更新时间:2025-01-25分类:社交大小:75.8MB更新时间:2024-12-12分类:办公大小
大疆DJI Pocket 2 云台相机怎么样 大疆DJI Pocket 2 云台相机评测微型手机 超小「大疆DJI Pocket 2 云台相机怎么样 大疆DJI Pocket 2 云台相机评测」
作为旅行达人,今天旅行达熊Ron跟大家一起聊聊双十一值得买的旅拍设备--大疆口袋相机DJI Pocket 2。说到旅行,肯定离不开摄影拍照。出门旅行,有哪些值得带的拍照小设备呢?对于爱旅行的里享家来说,旅拍已经成为我们生活的一部分,出门旅
相关文章
推荐文章
发表评论
0评