美文网首页音视频
Android多媒体

Android多媒体

作者: 237a476a5ad7 | 来源:发表于2019-03-11 08:30 被阅读29次

通知:在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 3

3.音频类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()//获取音频的时长

初始化音频 释放mediaplayer

4.播放视频,利用VideoView类的对象来完成,有八个方法,VideoView可以是布局控件

.setVideoPath() 用File来存储播放路径,//设置播放视频的文件位置

.start() //开始播放    .pause()//暂停播放    .resume()//将视频重头播放

.seekTo() //从指定位置开始播放  .isPlaying()//是否有播放    .getDuration//获得视频时长

.suspend()//释放VideoView对象

初始化VideoView 释放VideoView

相关文章

网友评论

    本文标题:Android多媒体

    本文链接:https://www.haomeiwen.com/subject/spompqtx.html