分享好友 最新动态首页 最新动态分类 切换频道
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所占用的资源释放掉。

最新文章
iQOO太拼了!骁龙8Gen3+6100mAh+120W+4500nit,如今低至1826元起
众所周知,iQOO是vivo的子品牌,虽然销量表现和红米还有一定的差距,但是最近几年,为了刺激消费者的购买欲,iQOO也是相当激进,打造的不少手机,综合性价比都能和红米一较高下,其中某些机型,性价比甚至超越了红米,现在要说的这款iQOO N
上空悬的乐道L90,比理想更值?
2025年,曾立下月销2万“军令状”的汽车并没有如愿迎来开门红,一季度一共只卖了14781台车,月均销量不足5000台。紧接着,4月2日,乐道汽车总裁艾铁城官宣离职。一时间,乐道的路在何方成为了全网讨论的焦点。交付拉胯、营销失利、负面舆论
原创2024年最值得买的三款千元拍照手机,公认高配低价,系统也很流畅新上市的手机「原创2024年最值得买的三款千元拍照手机,公认高配低价,系统也很流畅」
作为国内消费者,我们是幸运的,因为哪怕你的预算不是很多,只要用心,还是可以买到很多配置不错的性价比屏拍照手机。来到2024年之后,市场布局有了明显的不同,所以,如果打算换手机,喜欢拍照,不妨考虑下以下三款2024年最值得推荐的拍照
稳中有升,一季度GDP同比增5.4%
每经记者:周逸斐    每经编辑:陈,旭2025年4月16日,国务院新闻办公室举行新闻发布会,请国家统计局副局长盛来运介绍2025年一季度国民经济运行情况。盛来运表示,一季度国内生产总值()318758亿元,按不变价格计算,同比增长5.4%,比
2025年吊扇十大品牌三星手机是哪个国家的品牌「2025年吊扇十大品牌」
一、吊扇的安装要求1、安装高度要合适,一般以扇叶距地面2.5~3m,与天花板的距离以400~500mm为宜。离地面太近容易伤人,距天花板太近影响叶背气流,降低风量。2、挂钩应安装牢固, 吊扇挂钩的直径不应小于吊扇悬挂销钉的直径,且不得小于
mumu按键精灵_什么安卓模拟器可实现操作录制?MuMu模拟器成为你的按键精灵_MuMu安卓模拟器/MuMu手游助手...按键精灵手机助手「mumu按键精灵_什么安卓模拟器可实现操作录制?MuMu模拟
MuMu模拟器可以让玩家在电脑上玩手游,模拟器玩手游优势很多,包括键鼠操作、手柄操作好、大屏清晰视觉好,还能多开挂机,工具辅助,边玩边看游戏攻略、直播视频。MuMu模拟器作为网易出品的一款免费电脑软件
手机已锁定的备忘录密码忘了怎么找回手机备忘录「手机已锁定的备忘录密码忘了怎么找回」
电脑手机云便签 朋友推荐敬业签手机备忘录可用于记事。很多朋友在备忘录中记录了个人私密事情后,为了保护数据安全隐私,会对备忘录内容进行锁定加密,设置后需输入正确的备忘录密码方可解锁查看。那手机已锁定的备忘录密码忘了怎么找回呢
纬钛机器人完成近亿元天使+轮融资,早期融资迎来爆发丨每日钱潮
本文共1702字每日天使投融资数据观察,带你穿透今日市场,关注资金流向,把握融资趋势。文末获取今日融资详细数据表格。2025年4月16日,据烯牛数据统计(数据统计时间15日-16日16时),国内外共发生融资事件38起。其中国内22起,国外16起,
揭秘全屋定制板材成本真相,看看你有没有被商家高价割韭菜
惊爆!全屋定制黑幕大揭秘,板材成本真相曝光 家人们,今天必须来给大家扒一扒全屋定制行业的那些黑幕!很多人花大价钱定制衣柜,结果可能被狠狠割了韭菜。你以为花 3000 块定制的衣柜有多高端?实际上成本可能只要 500 块!今天就带大家揭
重庆綦江:电“靓”非遗 茶香四溢
4月8日,在重庆市綦江区永新镇茶山,一大片苍绿的茶海绵延不绝,村民们穿梭在连绵的茶垄间,熟练地将芽尖嫩绿收入箩筐。采摘好的春茶由茶山脚下的古剑山祺茗茶叶有限公司(以下简称“祺茗茶叶公司”)统一加工。茶厂内,綦山茶茗非遗传承人屈
相关文章
推荐文章
发表评论
0评