美文网首页音视频
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