使用通知(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差不多。

更多相关文章

  1. Android(安卓)之startActivityForReult 与 onActivityResult简介
  2. 数据储存方式-SharedPreferences
  3. Android获取内存的不同方法总结
  4. laravel使用Dingo\Api通过response()->json()返回空对象
  5. Android(安卓)- 动态设置自定义View的id - setId
  6. android ui机制的学习笔记
  7. Android(安卓)SystemUI分析
  8. Android(安卓)【插件化】"偷梁换柱"的高手-VirtualApk源码解析
  9. android post数据到服务器端工具类(包括postjson字符串、键值对)

随机推荐

  1. Android(安卓)面试必备 - JVM 及 类加载
  2. Android(安卓)Property System | Android
  3. android studio 使用adb命令传递文件到an
  4. Android™ 2.1 android.R.drawable Icon
  5. Android(安卓)Studio点击按钮更换背景图
  6. Android(安卓)Treble 简介
  7. android scroller类的使用
  8. android相关
  9. ch020 Android(安卓)SQLite3(第二部分)
  10. android中ImageView、ImageButton、Butto