通知:在APP没有运行时,给手机上方发出一条通知。可以在活动,广播,服务中创建。
使用通知时要NotificationManager来管理:(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE)
Notification对象:new NotificationCompat.Builder(context).build()
在build前面可以设置通知的内容如:setContentTitle,setContentText,setWhen,setSmallIcon,setLargeIcon,setContentIntent,setAutoCancel。其中setwhen是通知创建的时间,setSmallIcon是小图标只能用alpha图层。
让通知显示NotificationManager.notify(id,Notification的对象)
其中setContentIntent是点击之后的有跳到活动或广播或服务。此传入一个PendingInttent的对象:PendingIntent pi=PendingIntent.getActivity(this,0,intent,0); 其中还有getBroadcast(),getServeice()
让通知显示栏消失的两个办法:1.在notification的对象中添加.setAutoCancel(true) 2.在notificationManager的对象中 调用.cancel(1),这里的1是id,在notify的id。
创建一个通知通知的响声:.setSound(Uri.fromFile(new File("stsyem/media/audio/ringtones/Luna.ogg")))
通知的震动:setVibrate(new long[]{0,1000,1000,1000}) 静止震动静止震动 需要声明权限VIBRATE
通知的前置LED:setLights(Color.GREEN,1000,1000) 颜色,亮起时长,暗去时长
如果你自己不想去设置播放铃声和振动可以写成:.setDefaults(NotificationCompat.DEFAULT_ALL)
通知输入长内容而全部显示:.setStyle(new NotificationCompat.BigTextStyle().bigText("ajfaslkfjas"))
通知栏输入大图片:setStyle(new Notification.BigPictureStyle().bigPicture(BitmpFactory.decodeResources(getResources(),R.drawable.big_image)))
通知的重要程度:.setPriority(NotificationCompat.PRIORITY_MAX) 其从大到小MAX,HIGH,LOW,MIN 其中Max会带横幅。
通知的进阶调用摄像头拍照,调用本地的图库,播放本地的音乐,播放本地的电影
这几个要调用的程序权限都一样:WRITE_EXTERNAL_STORAGE
此内容的文件的大小一般都比较大,建议学习学习压缩知识。
首先调用相机,要给拍的照片指定一个存储的位置和文件,这个位置数据保存在Uri中。利用File来存储这个图片,这个File中指定了路径以及图片的名称,并把这个File转换成Uri对象,在不同的版本中File转换成Uri对象的方式不同。
File cun=new File(getExternalCacheDir(),"1.jpg") //路径和文件名 然后判断这个文件名是否存在.exists(),存在就删了它.delete(),再重新创建一个.createNewFile() 在try和catch语句中执行
获得安卓版本号的方法 Build.VERSION.SDK_INT 24的是安卓的7版本
获得安卓手机的型号的方法:Build.MODEL
在安卓7版本以上把File变成Uri的方法:FileProvider.getUriForFile(this,"name.fileprovider",File的对象)
在安卓7版本以下把File变成Uri的方法:Uri.fromFile(File的对象)
调用摄像头的intent方法:Intent intent=new Intent("android.media.action.IMAGE_CAPTURE");
intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri)
startActivityForResult(intent,1)
存储及调用摄像头这里调用的是有返回结果的intent,所以重写onActivityResult来接收返回的结果。然后查看存在Uri里面的File的内容,还要用到内容提供器去提取,这里我也不是很懂
Bitmap bitmap=BitmapFactory.decodeStream(getContentResolver().openInputStream(Uri的对象));
将图片显示出来.setImageBitmap(bitmap) 其过程在try-catch中执行
显示图片因为使用到了内容提供器,所以要注册。
内容提供器注册2.因为打开相册是危险行为所以要先查看权限是否被允许:
1 2调用本地相册的代码:Intent intent=new Intent("android.intent.action.GET_CONTENT");
intent.setType("image/*")
startActivityForResult(intent,1)
然后重写onActivityResult方法,把传过来的Intent的值进行解析,解析成String类型,看它选择的是哪一张照片。
安卓4.4以下的版本(19)的处理方法:Uri uri=intent.getData();
String imagePath=getImagePath(uri,null) //用内容提供器查询图片的信息
displayImage(imagePath)//让他把图片展示出来
安卓4.4以上的版本(19)的处理方法:Uri uri=data.getData();
//如果是document类型的uri,则通过decument 处理
if(DocumentsContract.isDocumentUri(this,uri)){
String docId=DocumentsContract.getDocumentId(uri);
if("com.android.providers.media.documents".equals(uri.getAuthority())){
String id=docId.split(":")[1];
String selection=MediaStore.Images.Media._ID+"="+id;
imagePath=getImagePath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,selection);
}else if("com.android.providers.downloads.documents".equals(uri.getAuthority())){
Uri contentUri= ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"),Long.valueOf(docId));
imagePath=getImagePath(contentUri,null);
}
}else if("content".equalsIgnoreCase(uri.getScheme())){
imagePath=getImagePath(uri,null);
}else if("file".equalsIgnoreCase(uri.getScheme())){
imagePath=uri.getPath();
}
1 2 33.音频类MediaPlayer()对象,一共有十个方法:
.setDataSource(file.getPath()) // 初始化音频 File file=new File(Environment.getExtermalStorageDirectory(),"musci.mp3"); 用File来存储音频的路径
.perpare() //播放之前的完成的准备工作
.start() //开始播放 .pause()//暂停播放 .
.reset() //释放MediaPlayer对象的资源 .stop()调用此方法MediaPlayer不在使用 .release()释放MediaPlayer
.seekTo()//从指定位置开始播放 .isPlaying()//是否正在播放 .getDuration()//获取音频的时长
初始化音频 释放mediaplayer4.播放视频,利用VideoView类的对象来完成,有八个方法,VideoView可以是布局控件
.setVideoPath() 用File来存储播放路径,//设置播放视频的文件位置
.start() //开始播放 .pause()//暂停播放 .resume()//将视频重头播放
.seekTo() //从指定位置开始播放 .isPlaying()//是否有播放 .getDuration//获得视频时长
.suspend()//释放VideoView对象
初始化VideoView 释放VideoView
网友评论