一、通知

  1. 需要NotificationManager对通知进行管理,getSystemService获取系统中的那个服务。
NotificationManager manager =
(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
  1. 用support-v4库提供的NotificationCompat类来创建Notification对象,确保了兼容性。

  2. 创建一个丰富的Notification对象,setContentTitle设置标题,setContentText设置内容,setWhen用于指定通知被创建的时间。使用Build方法进行生成。

Notification notification = new NotificationCompat.Builder(this)
.setContentTitle("This is content title")
.setContentText("This is content text")
.setWhen(System.currentTimeMillis())
.setSmallIcon(R.mipmap.ic_launcher)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))
.build();
  1. 使用notify方法将通知显示出来,notify()有两个参数,一个是id,一个是刚才创建的notification对象。
manager.notify(1, notification);
  1. 现在的notify可以显示出来,但是不能相应点击事件。我们现在让他点击后进入NotificationActivity活动中。

先构建Intent对象,pendingIntent式延迟执行的Intent,根须需求选择是使用getActivity还是getService。

Intent intent = new Intent(this,NotificationActivity.class);
PendingIntent pi = PendingIntent.getActivity(this,0,intent,0);

第一个参数是context,第二和第四个参数通常传入0就可以了。

  1. 在NotificationCompat.Builder中调用setContentIntent(pi)传入即可。
  2. 通知图标在产生点击事件时不会消失,要使其消失,有两种方法:
  • 要在NotificationActivity中添加
NotificationManager manager = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
manager.cancel(1);
  • 或者NotificationCompat.Builder调用setAutoCancel(true)

通知的高级用法

  1. 允许播放音频。
Uri soundUri = Uri.fromFile(new File("/system/media/audio/ringtones/ Basic_tone.ogg"));
notification.sound = soundUri;
  1. 震动。
//下标为0的值表示手机静止的时长,下标为1的值表示手机振动的时长,下标为2的值又表示手机静止的时长,以此类推。
setVibrate(new long[]{0,1000,1000,1000}).build();
notification.vibrate = vibrates;
  1. LED灯
// LED 灯以绿色的灯光一闪一闪的效果
notification.ledARGB = Color.GREEN;
notification.ledOnMS = 1000;
notification.ledOffMS = 1000;
notification.flags =
Notification.FLAG_SHOW_LIGHTS;

二、短信

接收短信

  1. 定义一个接受者。
class MessageReceiver extends BroadcastReceiver { @Overridepublic void onReceive(Context context, Intent intent) { Bundle bundle = intent.getExtras();Object[] pdus = (Object[]) bundle.get("pdus"); // 提取短信消息SmsMessage[] messages = new SmsMessage[pdus.length]; for (int i = 0; i < messages.length; i++) {messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);}String address = messages[0].getOriginatingAddress(); // 获取发送方号码String fullMessage = "";for (SmsMessage message : messages) {fullMessage += message.getMessageBody(); // 获取短信内容}sender.setText(address); content.setText(fullMessage);}
}

我们从 Intent 参数中取出了一个 Bundle 对象,然后使用 pdu 密钥来提取一个 SMS pdus 数组, 其中每一个 pdu 都表示一条短信消息。接着使用 SmsMessage 的
createFromPdu() 方法将每一个 pdu 字节数组转换为 SmsMessage 对象, 调用这个对象的
getOriginatingAddress()方法就可以获取到短信的发送方号码,调用 getMessageBody()方法就可以获取到短信的内容,然后将每一个 SmsMessage 对象中的短信内容拼接起来,就组成了一条完整的短信。

  1. 在活动中的oncreate方法中绑定 事件 与 内容接受者。
receiveFilter = new IntentFilter();
receiveFilter.addAction("android.provider.Telephony.SMS_RECEIVED");
messageReceiver = new MessageReceiver();
registerReceiver(messageReceiver, receiveFilter);

接收短信

  1. 得到SmsManager实例,直接调用sendextMessage方法。
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(to.getText().toString(),
null,msgInput.getText().toString(), null, null);

sendTextMessage()方法接收五个参数,其中第一个参数用于指定接收人的手 机号码,第三个参数用于指定短信的内容

  1. 类似通知,想要在发送短信之后知道短信的状态,怎么办呢?
sendFilter = new IntentFilter();
sendFilter.addAction("SENT_SMS_ACTION");
sendStatusReceiver = new SendStatusReceiver();
registerReceiver(sendStatusReceiver, sendFilter); send.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {SmsManager smsManager = SmsManager.getDefault(); Intent sentIntent = new Intent("SENT_SMS_ACTION");PendingIntent pi = PendingIntent.getBroadcast (MainActivity.this, 0, sentIntent, 0);smsManager.sendTextMessage(to.getText().toString(), null,msgInput.getText().toString(), pi, null);}
});class SendStatusReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {if (getResultCode() == RESULT_OK) {// 短信发送成功Toast.makeText(context, "Send succeeded",   Toast.LENGTH_LONG).show();} else {// 短信发送失败Toast.makeText(context, "Send failed", Toast.LENGTH_LONG).show();}}
}
  • 获取到了一个 PendingIntent 对象,并将它作为第四个参数传递到 sendTextMessage()方法中
  • PendingIntent 发出 SENT_SMS_ACTION 这样的一个事件
  • 新建一个事件接受者SendStatusReceiver,绑定该接受者 和 SENT_SMS_ACTION 事件。

三、摄像头和相册

  1. 定义输出图片的路径
  2. 启动相机程序的Intent
  3. 启动相机并拍照
  4. 进入onActivityResult,启动截图的Intent
  5. 截图成功
  6. 把图片显示出来

四、多媒体文件

音频

方法名 功能描述
setDataSource() 设置要播放的音频文件的位置。
prepare() 在开始播放之前调用这个方法完成准备工作。
start() 开始或继续播放音频。
pause() 暂停播放音频。
reset() 将 MediaPlayer 对象重置到刚刚创建的状态。
seekTo() 从指定的位置开始播放音频。
stop() 停止播放音频。调用这个方法后的 MediaPlayer 对象无法再播放音频。
release() 释放掉与 MediaPlayer 对象相关的资源。
isPlaying() 判断当前 MediaPlayer 是否正在播放音频。
getDuration() 获取载入的音频文件的时长。

首先需要创建出一个MediaPlayer 对象,然后调用 setDataSource()方法来设置音频文件的路径,再调用 prepare()方法使MediaPlayer 进入到准备状态,接下来调用start()方法就可以开始播放音频,调用pause() 方法就会暂停播放,调用 reset()方法就会停止播放。

视频

方法名 功能描述
setVideoPath() 设置要播放的视频文件的位置。
start() 开始或继续播放视频。
pause() 暂停播放视频。
resume() 将视频重头开始播放。
seekTo() 从指定的位置开始播放视频。
isPlaying() 判断当前是否正在播放视频。
getDuration() 获取载入的视频文件的时长。

安卓学习 之 多媒体技术(八)相关推荐

  1. 安卓学习文档收集汇总

    安卓学习文档收集汇总 https://www.jianshu.com/p/86aed183ce6c?utm_campaign=maleskine&utm_content=note&ut ...

  2. 【安卓学习之开发工具】 Android 学习-- 下载过的一些项目

    █ [安卓学习之开发工具] Android 学习-- 下载过的一些项目 █ 相关文章: ● [安卓学习之常见问题] app维护可能遇到的问题 ● [IOS学习之常见问题] app维护可能遇到的问题 ● ...

  3. 安卓TV开发(八) 移动智能终端多媒体爬虫技术 获取加载网页视频源

    转载请标明出处:http://blog.csdn.net/sk719887916/article/details/40049137,作者:skay 从上一篇学习中,学习了多媒体技术中的怎么去用josu ...

  4. 【安卓学习之常见问题】google play service

    █ [安卓学习之常见问题]google play service █ 系列文章目录 提示:这里是收集了安卓学习之常见问题的相关文章 [安卓学习之常见问题] 界面(Activity/Fragment)之 ...

  5. Kotlin 学习笔记(八)—— Kotlin类与对象之接口

    Kotlin 学习笔记(八)-- Kotlin类与对象之接口 Kotlin学习笔记系列教程 Kotlin 学习笔记(一)-- 概述.学习曲线.开发工具.参考资料 Kotlin 学习笔记(二)-- 基础 ...

  6. Windows进程与线程学习笔记(八)—— 线程切换与TSS/FS

    Windows进程与线程学习笔记(八)-- 线程切换与TSS/FS 要点回顾 线程切换与TSS 内核堆栈 调用API进0环 实验:分析SwapContext 线程切换与FS 段描述符结构 分析Swap ...

  7. Windows保护模式学习笔记(八)—— 页目录表基址/页表基址

    Windows保护模式学习笔记(八)-- 页目录表基址/页表基址 要点回顾 一.页目录表基址 实验:拆分线性地址C0300000,并查看其对应的物理页 第一步:打开一个进程,获得它的Cr3 第二步:查 ...

  8. .Net程序员安卓学习之路5:使用xutils注入View和事件以及图片的显示

    原文:.Net程序员安卓学习之路5:使用xutils注入View和事件以及图片的显示 xUtils注入和图片显示 一.xUtils注入 引用官方介绍: ViewUtils模块:•android中的io ...

  9. OpenCV学习笔记(八):形态学morpholgy(2):开/闭运算,形态学梯度、顶帽/黑帽morphologyEx()

    OpenCV学习笔记(八):形态学morpholgy(2):开.闭运算,形态学梯度.顶帽.黑帽:morphologyEx() 数学形态学(Mathematical morphology) 是一门建立在 ...

最新文章

  1. 计算机会计学ufo报表,计算机会计实践部分工资管理系统.ppt
  2. python第三周笔记_Python第三周 学习笔记(1)
  3. webstorm前端调用后端接口_一篇前端同学对后端接口的吐槽
  4. linux中facl有什么作用,在Linux中使用setfacl后权限被拒绝
  5. 终端服务器超过了 最大连接数
  6. IE8 select 动态下拉遇到的问题
  7. python3.9新特性_Python3.9又更新了:dict内置新功能
  8. vmware快速搭建OpenStack云计算平台
  9. 博弈-尼姆博弈(nimm)
  10. 5. php 基本数据类型
  11. CCF推荐+SCI二区期刊征收AI方向特刊|确定3个月出录用结果
  12. Vue中如何解决跨域问题
  13. 微软office2004 抢新体验版
  14. 将 npm/yarn 的源地址替换成国内镜像的源地址
  15. 设置笔记本为无线wifi发射器
  16. UML入门1:事物和事物关系简介
  17. Blo Tx Pending
  18. Froyo(Android2.2)移植到Mips平台经验总结
  19. for和while循环
  20. Android高德地图贴合图片完成手绘地图展示

热门文章

  1. linux 启动后台服务 nohup
  2. 排序算法——插入排序
  3. SQLServer附加数据库提示“版本为661,无法打开,支持655版本……”
  4. Anbox 实现分析 3:会话管理器与容器管理器的通信
  5. Linux网络编程 | 信号 :信号函数、信号集、统一事件源 、网络编程相关信号
  6. 深入理解DPDK架构|经典PDF分享
  7. 跟着邓神 3 天掌握 Go 语言基础(免费)
  8. C++中类的6个默认成员函数
  9. 程序员35岁破局之路
  10. 音视频技术开发周刊 | 185