《第一行代码--Android》读书笔记之使用通知和多媒体

原创 2015年11月21日 20:05:24

使用通知(Notification)

我发现很多android系统的特色服务都是需要获得~Manager来管理的,比如LocalManager(获取定位服务),SensorManager(获取光照传感器服务)等等。

  • 通知属于系统的特色服务,需要一个NotificationManager来管理。
    NotificationManager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
  • 获取Notification对象实例,配置好Notification的各种属性,比如图标,标题,内容。

    要先响应Notification的点击事件,需要借助一个PendingIntent类。Pending 未决定的,将要发生的意思。所以顾名思义,PendingIntent就是一个在某个合适的时机去执行某个action,延迟执行的Intent。要获取PendingIntent,可以调用静态方法,PendingIntent.getActivity()、PendingIntent.getBroadcast()和PendingIntent.getService()方法,它们的参数是完全相同的。第一个参数依旧是Context对象,第二个参数通常传入0,第三个参数是Intent对象,设置PendingIntent的意图,第四个参数用于确定PendingIntent的行为。

    • 低于API Level 11版本,也就是Android 2.3.3以下的系统中,setLatestEventInfo()函数是唯一的实现方法。
      Intent intent = new Intent(this,MainActivity);
      PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_ONE_SHOT);
      notification.setLatestEventInfo(context, title, message, pendingIntent);
      manager.notify(id, notification);
    • 高于API Level 11,低于API Level 16 (Android 4.1.2)版本的系统中,可使用Notification.Builder来配置Notification的各种属性,但要使用getNotification()来得到Notification的实例。
      Notification notification = new Notification.Builder(context)
      .setAutoCancel(true)
      .setContentTitle(“title”)
      .setContentText(“describe”)
      .setContentIntent(pendingIntent)
      .setSmallIcon(R.drawable.ic_launcher)
      .setWhen(System.currentTimeMillis())
      .setOngoing(true);
      notification=builder.getNotification();//This method was deprecated in API level 16. Use build() instead.
    • 高于API Level 16的版本,就可以用Builder和build()函数来配套的方便使用notification了。
      Notification.Builder builder = new Notification.Builder(context)
      .setAutoCancel(true)
      .setContentTitle(“title”)
      .setContentText(“describe”)
      .setContentIntent(pendingIntent)
      .setSmallIcon(R.drawable.ic_launcher)
      .setWhen(System.currentTimeMillis())
      .build();
  • 调用NotificationManager.notify()方法发送通知,调用NotificationManager.cancel()方法关闭通知。

发送短信


  • 获取SMSManager实例
    SMSManager smsmanager=SmsManager.getDefault();
  • 调用SmsManager.sendTextMessage()方法。

接受短信就不总结了,就是自定义一个接受短信消息的广播接收器,在onReceive()方法中编写解释短信的逻辑。

调用摄像头和相册

  • 创建一个图片文件的路径并创建一张空图片,把路径转化成Uri对象。
File outputImage=new File(Environment.getExternalStorageDirectory(),"tempImage.jpg");
                try {
                    if(outputImage.exists())
                        outputImage.delete();
                    outputImage.createNewFile();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                imageuri=Uri.fromFile(outputImage);
                Intent intent=new Intent("android.media.action.IMAGE_CAPTURE");
                intent.putExtra(MediaStore.EXTRA_OUTPUT,imageuri);
                startActivityForResult(intent,TAKE_PHOTO);
  • 调用startActivityForResult()启动拍照程序
  • 在回调函数onActivityResult()方法中,进行剪切图片和显示图片的操作。
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode){
            case TAKE_PHOTO:
                if(resultCode==RESULT_OK){
                    Intent intent=new Intent("com.android.camera.action.CROP");
                    intent.setDataAndType(imageuri,"image/*");
                    intent.putExtra("scale", true);
                    intent.putExtra(MediaStore.EXTRA_OUTPUT,imageuri);
                    startActivityForResult(intent,CROP_PHOTO);
                }
                break;
            case CROP_PHOTO:
                if (resultCode==RESULT_OK){
                    try {
                        Bitmap bitmap= BitmapFactory.decodeStream(getContentResolver().openInputStream(imageuri));
                        picture.setImageBitmap(bitmap);
                    } catch (FileNotFoundException e) {
                        e.printStackTrace();
                    }
                }
                break;
            case CHOOSE_PHOTO:
                if(resultCode==RESULT_OK){
                    Intent intent=new Intent("com.android.camera.action.CROP");
                    intent.setDataAndType(data.getData(),"image/*");
                    //intent.setDataAndType(imageuri,"image/*");
                    intent.putExtra("scale", true);
                    intent.putExtra(MediaStore.EXTRA_OUTPUT,imageuri);
                    startActivityForResult(intent, CROP_PHOTO);
                }
                break;
            default:
                break;
        }
    }
File outputImage=new File(Environment.getExternalStorageDirectory(),"output_Image.jpg");
                try {
                    if(outputImage.exists())
                        outputImage.delete();
                    outputImage.createNewFile();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                imageuri=Uri.fromFile(outputImage);
                Intent intent=new Intent();
                //intent.setAction(Intent.ACTION_PICK);
                intent.setAction(Intent.ACTION_GET_CONTENT);           
                intent.setType("image/*");
                startActivityForResult(intent,CHOOSE_PHOTO);

书上从相册中选择照片剪切完成并显示的相关代码似乎有误,反正我用书上代码,在真机上无法弹出剪切照片的程序的。如果有跟我有同样的问题可以参考我的代码。

播放多媒体

  • 播放音频
    • 构造MediaPlayer对象
    • 调用setDataSource()方法设置音频路径
    • 调用prepare()使MediaPlayer进入准备状态
    • 主要方法:
      start() 开始或继续播放音频
      pause() 暂停播放音频
      reset() 将MediaPlayer对象重置到刚开始创建的状态
      seekTo() 从指定的位置开始播放
      stop() 停止播放音频
      release() 释放掉与MediaPlayer对象相关的资源
      isPlaying() 判断当前MediaPlayer是否正在播放音频
      getDuration() 获取载入的音频文件的时长
  • 播放视频
    • 实例化VideoView对象
    • 调用setVideoPath()指定视频文件的路径
    • 具体方法与MediaPlayer差不多。
版权声明:本文为博主原创文章,未经博主允许不得转载。

《第一行代码》第八章 通知的使用(NotificationTest)

参考:第一行代码 第八章讲的是手机多媒体的应用。虽然很多人使用手机,但是大家并不知道为什么自带有很多程序。比如自带的多媒体应用。然后我们就可以使用这些多媒体编写更多,更高质量的应用!...
  • yinchaoji_
  • yinchaoji_
  • 2016年04月17日 23:53
  • 484

第一行代码笔记,第八章-----多媒体的使用

1:通知的使用:       通知:比如:头条,淘宝,各种APP打开时,发送的提示信息,(智能手机从最上面拉下来的界面就是通知界面显示的地方,也就是所谓的状态栏)。        1.1 通知的基...
  • TAR1314520
  • TAR1314520
  • 2016年10月13日 16:00
  • 218

第一行代码-8.4 播放多媒体文件

1、播放音频   播放音乐可以通过MediaPlayer实现,下面说明一下MediaPlayer的一些常用的类。 方法名 功能描述 setDataSource() 设置要播放的音频文件的位置 ...
  • xiaoliizi
  • xiaoliizi
  • 2016年02月23日 18:50
  • 704

第一行代码-8.1 使用通知

1、通知的基本用法   先看看怎么创建一个通知事件。// NotificationTest-MainActivity.java private Button mBSendNotify; @Overr...
  • xiaoliizi
  • xiaoliizi
  • 2016年02月22日 21:54
  • 450

Android第一行代码读书笔记

从这里开始,进入android的专业开发大门。 活动,是android第一个大的组件。 android开发需要涉及到类的继承,所有活动从Activity这个类继承。 接下来是方法的重写或者说覆盖。...
  • androidTang
  • androidTang
  • 2015年10月09日 00:24
  • 450

多媒体和通知---《第一行代码Android》笔记

连接真机 使用通知Notification 基本使用方法 调用摄像头和相册 播放音频 播放视频 连接真机从4.2版本开始,开发者选项默认是隐藏的,进入“关于手机”-“版本号”那一栏连续轻点,就能开启开...
  • zlxtk
  • zlxtk
  • 2017年07月13日 15:59
  • 320

网络---《第一行代码Android》笔记

WebView的用法 使用HttpURLConnection连接网络 使用OkHttp工具连接网络 WebView的用法用于展示一个网页,相当于一个嵌入式的浏览器。 添加权限package com....
  • zlxtk
  • zlxtk
  • 2017年07月14日 11:09
  • 218

第一行代码学习笔记---过时的通知写法

8.29更新—>关于通知的文章 http://blog.csdn.net/vipzjyno1/article/details/25248021 今天读到第一行那个代码365页的服务通知写法。发现里...
  • lw_zhaoritian
  • lw_zhaoritian
  • 2016年08月26日 14:50
  • 704

Android第一行代码学习笔记

1.隐藏标题栏requestWindowFeature(Window.FEATURE_NO_TITLE);注意这句代码必须要在setContentView之前调用 2.隐式Intent 声明: ...
  • chenzheng8975
  • chenzheng8975
  • 2016年12月16日 14:36
  • 304

Android第一行代码学习笔记三----广播

简介 Android 中的广播主要可以分为两种类型,标准广播和有序广播。 标准广播:完全异步执行,效率会比较高,无法被截断。 有序广播:同步执行,广播接收器有先后顺序,可以截断。 ...
  • u012195899
  • u012195899
  • 2016年09月18日 20:09
  • 308
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《第一行代码--Android》读书笔记之使用通知和多媒体
举报原因:
原因补充:

(最多只允许输入30个字)