首页 文章 精选 留言 我的

精选列表

搜索[媒体 AI],共10002篇文章
优秀的个人博客,低调大师

Kodi “Leia”18.5 发布,XBOX 媒体中心

距离Kodi 18.4发布已经过去了几个月,目前,Kodi 18.5也已经正式发布。 据介绍,18.5版本并没有没有新功能,而是重点在于压缩错误以及提高稳定性和性能。 该团队尚未发布主要更改的列表,但是在这个新版本中已经解决了多个问题,包括接口问题的修复,PVR组件的调整等等。 18.4与18.5的详细对比:https://github.com/xbmc/xbmc/compare/18.4-Leia...18.5-Leia 最新版Kodi的下载地址:https://kodi.tv/download 参考消息:https://betanews.com/2019/11/18/kodi-18-5-leia/

优秀的个人博客,低调大师

智能媒体管理(IMM) Python SDK DEMO

SDK For Python 本文以Python为示例 安装 Python 环境 IMM Service 的Python SDK目前只支持 Python 2.6.x, 2.7.x。 请按以下步骤安装Python: 下载并安装最新的 Python 2 安装包。 完成Python安装后,运行python -V确认Python版本。 下载并安装 Python 的包管理工具 pip。 完成 pip 安装后,你可以运行pip -V确认 pip 是否安装成功和查看当前 pip 版本。 安装 Imm Service Python SDK 使用 pip 安装(推荐) pip install aliyun-python-sdk-core # 安装阿里云 SDK 核心库 pip install aliyun-python-sdk-imm # 安装管理 IMM 的库 下载 GithHub 源码 git clone https://github.com/aliyun/aliyun-openapi-python-sdk.git # 安装阿里云 SDK 核心库 cd aliyun-python-sdk-core python setup.py install # 安装阿里云 IMM SDK cd aliyun-python-sdk-imm python setup.py install 使用Python SDK 初始化客户端 使用之前需要,您需要先获取 Region ID、AccessKey ID 和 AccessKey Secret。 # -*- coding: utf8 -*- import json import time from aliyunsdkcore.client import AcsClient client = AcsClient( "<your-access-key-id>", "<your-access-key-secret>", "<your-region-id>" ) 创建Project 根据您的需求,选择Project类型。本示例目的是展示关键参数,详情参考Project文档。 注意事项: 测试时Project的BillingType请设置为ByUsage方式,本文所有示例代码BillingType均使用ByUsage。 不能创建名称相同的Project。 代码示例 from aliyunsdkimm.request.v20170906 import PutProjectRequest project = "python-sdk-demo-doc" #设置Project的名字 project_type = "DocStarter" #图片标准型 project_cu = 1 project_billing_type = 'ByUsage' createReq = PutProjectRequest.PutProjectRequest() createReq.set_Project(project) createReq.set_Type(project_type) createReq.set_Type(project_cu) createReq.set_BillingType(project_billing_type) response = client.do_action_with_exception(createReq) print response 输出结果 { "CU": 1 , "Type": "DocStarter", "CreateTime": "2018-10-30T03:11:23Z", "RequestId": "4F048F9F-D622-4B96-9286-AEA234BF1480", "ModifyTime": "2018-10-30T03:11:23Z", "Project": "python-sdk-demo-doc", "BillingType": "ByUsage", "Endpoint": "imm.cn-beijing.aliyuncs.com", "ServiceRole": "" } 创建具体的服务 文档管理操作 文档同步转换 本示例目的是展示关键参数,其余参数具体请参考ConvertOfficeFormat。 代码示例 from aliyunsdkimm.request.v20170906 import ConvertOfficeFormatRequest project = "python-sdk-demo-doc" #演示用project已创建,您需要自己创建 sync_srcUri = "oss://co-user-cn-beijing/zqh/input/WORD/5页Word.docx" #您文档资源的位置 sync_tgtUri = "oss://co-user-cn-beijing/zqh/output/PDF/" #您要输出的位置 tgt_type = "png" #转化类型 createReq = ConvertOfficeFormatRequest.ConvertOfficeFormatRequest() createReq.set_Project(project) createReq.set_SrcUri(sync_srcUri) createReq.set_TgtUri(sync_tgtUri ) createReq.set_TgtType(tgt_type) response = client.do_action_with_exception(createReq) print response 输出结果 { "PageCount": 5, "RequestId": "84302ED0-4823-4623-8AED-6E4129DA9733" } 文档异步转换 创建转换任务 本示例目的是展示关键参数,其余参数具体请参考CreateOfficeConversionTask。 代码示例 from aliyunsdkimm.request.v20170906 import CreateOfficeConversionTaskRequest project = "python-sdk-demo-doc" #演示用project已创建,您需要自己创建 async_srcUri = "oss://co-user-cn-beijing/zqh/input/WORD/5页Word.docx" #您文档资源的位置 async_tgtUri = "oss://co-user-cn-beijing/zqh/output/PDF/" #您要输出的位置 tgt_type = "png" #转化类型 createReq = CreateOfficeConversionTaskRequest.CreateOfficeConversionTaskRequest() createReq.set_Project(project) createReq.set_SrcUri(async_srcUri) createReq.set_TgtUri(async_tgtUri ) createReq.set_TgtType(tgt_type) response = client.do_action_with_exception(createReq) print response 输出结果 { "Status": "Running", "CreateTime": "2018-10-30T03:49:06.345Z", "RequestId": "D1BA4308-CA2F-4F93-B3C6-B30188855138", "Percent": 0, "TaskId": "2ef08a22-6cff-4204-a1f5-38473d66596b", "TgtLoc": "oss://co-user-cn-beijing/zqh/input/WORD/5页Word.docx" } 获取转换状态 本示例目的是展示关键参数,其余参数具体请参考GetOfficeConversionTask。 代码示例 from aliyunsdkimm.request.v20170906 import GetOfficeConversionTaskRequest project = "python-sdk-demo-doc" #演示用project已创建,您需要自己创建 task_id = "2ef08a22-6cff-4204-a1f5-38473d66596b" createReq = GetOfficeConversionTaskRequest.GetOfficeConversionTaskRequest() createReq.set_Project(project) createReq.set_TaskId(task_id ) 输出结果 { "FailDetail": { "Code": "NoError" }, "NotifyTopicName": "", "TaskId": "2ef08a22-6cff-4204-a1f5-38473d66596b", "NotifyEndpoint": "", "PageCount": 5, "Status": "Finished", "TgtType": "png", "FinishTime": "2018-10-30T03:49:07.651Z", "RequestId": "D200F0EF-F3E7-4A18-B2A7-E7BBBA8E10EC", "CreateTime": "2018-10-30T03:49:06.345Z", "SrcUri": "oss://co-user-cn-beijing/zqh/input/WORD/5页Word.docx", "Percent": 100, "TgtUri": "oss://co-user-cn-beijing/zqh/input/WORD/5页Word.docx" } 图片管理操作 Face检测 本示例目的是展示关键参数,其余参数具体请参考DetectFace。 代码示例 from aliyunsdkimm.request.v20170906 import DetectFaceRequest project = "python-sdk-demo-photo" #演示用project已创建,您需要自己创建 srcUri = '["oss://co-user-cn-beijing/zqh/input/FaceGroup/500/0.bmp"]' #您图片资源的位置 createReq = DetectFaceRequest.DetectFaceRequest() createReq.set_Project(project) createReq.set_SrcUris(srcUri) response = client.do_action_with_exception(createReq) print response 输出结果 { "SrcUris": [ "oss://co-user-cn-beijing/zqh/input/FaceGroup/500/0.bmp" ], "RequestId": "21404A97-8625-44DB-8C7A-E7F33A9EDEF4", "SuccessDetails": [ { "SrcUri": "oss://co-user-cn-beijing/zqh/input/FaceGroup/500/0.bmp", "Faces": [ { "FaceAttribute": { "Blur": { "Blurness": { "Value": 12.217, "Threshold": 50 } }, "FaceQuality": { "Value": 100, "Threshold": 70.1 }, "HeadPose": { "RollAngle": 2.934, "PitchAngle": 10.529, "YawAngle": -3.145 }, "Age": { "Value": 21 }, "EyeStatus": { "RightEyeStatus": { "DarkGlasses": 0, "NoGlassEyeClose": 0.001, "Occlusion": 0.049, "NormalGlassEyeOpen": 0.106, "NormalGlassEyeClose": 0.001, "NoGlassEyeOpen": 99.842 }, "LeftEyeStatus": { "DarkGlasses": 0.014, "NoGlassEyeClose": 0.006, "Occlusion": 0.504, "NormalGlassEyeOpen": 4.954, "NormalGlassEyeClose": 0.004, "NoGlassEyeOpen": 94.517 } }, "Gender": { "Value": "Male" } }, "FaceRectangle": { "Top": 17, "Height": 89, "Width": 89, "Left": 4 }, "FaceId": "66690675bd0bc2599170fc63e7f8dbd8" } ], "PhotoId": "77f6e9ce630b83956192e8bd4af3cf39" } ], "FailDetails": [] } Tag检测 本示例目的是展示关键参数,其余参数具体请参考DetectTag。 代码示例 from aliyunsdkimm.request.v20170906 import DetectTagRequest project = "python-sdk-demo-photo" #演示用project已创建,您需要自己创建 srcUri = '["oss://co-user-cn-beijing/zqh/input/TagSet/baseball.jpg"]' #您图片资源的位置 createReq = DetectTagRequest.DetectTagRequest() createReq.set_Project(project) createReq.set_SrcUris(srcUri) response = client.do_action_with_exception(createReq) print response 输出结果 { "SuccessNum": "1", "RequestId": "6A3188E0-BC89-4AD5-9348-851F37F5AF95", "SuccessDetails": [ { "Tags": [ { "ParentTagId": "11", "TagScore": "0.8965469", "TagLevel": "2", "TagId": "0", "ParentTagName": "运动", "TagName": "其他" }, { "ParentTagId": "10", "TagScore": "0.7168899", "TagLevel": "2", "TagId": "655", "ParentTagName": "其他", "TagName": "棒球守备位置" }, { "ParentTagId": "11", "TagScore": "0.55166656", "TagLevel": "2", "TagId": "50", "ParentTagName": "运动", "TagName": "球赛" }, { "ParentTagId": "10", "TagScore": "0.53409994", "TagLevel": "2", "TagId": "940", "ParentTagName": "其他", "TagName": "场地" }, { "ParentTagId": "0", "TagScore": "0.5216745", "TagLevel": "2", "TagId": "159", "ParentTagName": "人物", "TagName": "比赛者" }, { "ParentTagId": "0", "TagScore": "0.5185509", "TagLevel": "2", "TagId": "65", "ParentTagName": "人物", "TagName": "足球运动员" }, { "ParentTagId": "0", "TagScore": "0.5162505", "TagLevel": "2", "TagId": "54", "ParentTagName": "人物", "TagName": "运动员" }, { "ParentTagId": "0", "TagScore": "0.5147973", "TagLevel": "2", "TagId": "133", "ParentTagName": "人物", "TagName": "棒球运动员" }, { "ParentTagId": "10", "TagScore": "0.5040618", "TagLevel": "2", "TagId": "453", "ParentTagName": "其他", "TagName": "球游戏" } ], "SrcUri": "oss://co-user-cn-beijing/zqh/input/TagSet/baseball.jpg" } ], "FailDetails": [] } QRCodes检测 本示例目的是展示关键参数,其余参数具体请参考DetectQRCodes。 代码示例 from aliyunsdkimm.request.v20170906 import DetectQRCodesRequest project = "python-sdk-demo-photo" #演示用project已创建,您需要自己创建 srcUri = '["oss://co-user-cn-beijing/zqh/input/TagSet/qrcode.png"]' #您图片资源的位置 createReq = DetectQRCodesRequest.DetectQRCodesRequest() createReq.set_Project(project) createReq.set_SrcUris(srcUri) response = client.do_action_with_exception(createReq) print response 运行结果 { "RequestId": "21B97DEA-A3A9-4473-90E5-D527CC0F7287", "SuccessDetails": [ { "SrcUri": "oss://co-user-cn-beijing/zqh/input/qrcode.png", "QRCodes": [ { "QRCodesRectangle": { "Top": 11, "Height": 280, "Width": 280, "Left": 11 }, "Content": "二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型。" } ] } ], "FailDetails": [] } Face分组 分组需要Project为PhotoProfessional类型。 创建FaceSet 代码示例 from aliyunsdkimm.request.v20170906 import CreateFaceSetRequest project = "python-sdk-demo-professional" # 演示用project已创建,您需要自己创建 createReq = CreateFaceSetRequest.CreateFaceSetRequest() createReq.set_Project(project) response = client.do_action_with_exception(createReq) print response 运行结果 { "Status": "Running", "Photos": 0, "RequestId": "006AF2E5-B1E9-4A8A-89F1-E4FE229C57AE", "CreateTime": "2018-10-30T06:58:35.556Z", "Faces": 0, "ModifyTime": "2018-10-30T06:58:35.556Z", "SetId": "FACE-99a292da-32e3-49cb-aa35-e6a01604a744" } 进行IndexFace人脸检测 本示例目的是展示关键参数,其余参数具体请参考IndexFace。 代码示例 from aliyunsdkimm.request.v20170906 import IndexFaceRequest project = "python-sdk-demo-professional" #演示用project已创建,您需要自己创建 srcUri = '["oss://co-user-cn-beijing/zqh/input/FaceGroup/500/0.bmp"]' #您图片资源的位置 createReq = IndexFaceRequest.IndexFaceRequest() createReq.set_Project(project) createReq.set_SrcUris(srcUri) response = client.do_action_with_exception(createReq) print response 运行结果 { "SrcUris": [ "oss://co-user-cn-beijing/zqh/input/FaceGroup/500/0.bmp" ], "RequestId": "14888AFD-E6D5-418D-B629-4E23A89C7022", "SuccessDetails": [ { "SrcUri": "oss://co-user-cn-beijing/zqh/input/FaceGroup/500/0.bmp", "Faces": [ { "FaceAttribute": { "Blur": { "Blurness": { "Value": 12.217, "Threshold": 50 } }, "FaceQuality": { "Value": 100, "Threshold": 70.1 }, "HeadPose": { "RollAngle": 2.934, "PitchAngle": 10.529, "YawAngle": -3.145 }, "Age": { "Value": 21 }, "EyeStatus": { "RightEyeStatus": { "DarkGlasses": 0, "NoGlassEyeClose": 0.001, "Occlusion": 0.049, "NormalGlassEyeOpen": 0.106, "NormalGlassEyeClose": 0.001, "NoGlassEyeOpen": 99.842 }, "LeftEyeStatus": { "DarkGlasses": 0.014, "NoGlassEyeClose": 0.006, "Occlusion": 0.504, "NormalGlassEyeOpen": 4.954, "NormalGlassEyeClose": 0.004, "NoGlassEyeOpen": 94.517 } }, "Gender": { "Value": "Male" } }, "FaceRectangle": { "Top": 17, "Height": 89, "Width": 89, "Left": 4 }, "FaceId": "66690675bd0bc2599170fc63e7f8dbd8" } ], "PhotoId": "77f6e9ce630b83956192e8bd4af3cf39" } ], "FailDetails": [], "SetId": "FACE-99a292da-32e3-49cb-aa35-e6a01604a744" } 进行GroupFace人脸分组 分组需要多张图片,请执行两次或以上IndexFace操作。 本示例目的是展示关键参数,其余参数具体请参考GroupFace。 代码示例 from aliyunsdkimm.request.v20170906 import GroupFacesRequest project = "python-sdk-demo-professional" set_id = "FACE-99a292da-32e3-49cb-aa35-e6a01604a744" createReq = GroupFacesRequest.GroupFacesRequest() createReq.set_Project(project) createReq.set_SetId(set_id) response = client.do_action_with_exception(createReq) print response 运行结果 { "Groups": [ { "UnGroupReason": "FaceNoSimilar", "GroupId": "0", "FaceId": "fffbf28d706c2230ba29a1b2ee271744" }, { "UnGroupReason": "FaceNoSimilar", "GroupId": "0", "FaceId": "5c1212c756047570ffd0839386b5c2bd" }, { "UnGroupReason": "FaceNoSimilar", "GroupId": "0", "FaceId": "66690675bd0bc2599170fc63e7f8dbd8" }, { "UnGroupReason": "FaceNoSimilar", "GroupId": "0", "FaceId": "dadddf6bdd41d02aadc9fc4f2b54ca2b" } ], "RequestId": "AC452D2A-F2B2-48AD-83B4-A6E03D38066F", "HasMore": 0, "SetId": "FACE-99a292da-32e3-49cb-aa35-e6a01604a744" } Tag分组 分组需要Project为PhotoProfessional类型。 创建TagSet 代码示例 from aliyunsdkimm.request.v20170906 import CreateTagSetRequest project = "python-sdk-demo-professional" # 演示用project已创建,您需要自己创建 createReq = CreateTagSetRequest.CreateTagSetRequest() createReq.set_Project(project) response = client.do_action_with_exception(createReq) print response 运行结果 { "Status": "Running", "Photos": 0, "RequestId": "FD93E872-1437-4A78-8C15-CBD83B9CE152", "CreateTime": "2018-10-30T07:33:15.365Z", "ModifyTime": "2018-10-30T07:33:15.365Z", "SetId": "TAG-9d79cc61-0f2b-4d4d-931a-377bcc641878" } 进行IndexTag图片检测 本示例目的是展示关键参数,其余参数具体请参考IndexTag。 代码示例 from aliyunsdkimm.request.v20170906 import IndexTagRequest project = "python-sdk-demo-professional" #演示用project已创建,您需要自己创建 srcUri = '["oss://co-user-cn-beijing/zqh/input/FaceGroup/500/0.bmp"]' #您图片资源的位置 set_id = 'TAG-9d79cc61-0f2b-4d4d-931a-377bcc641878' createReq = IndexTagRequest.IndexTagRequest() createReq.set_Project(project) createReq.set_SrcUris(srcUri) createReq.set_SetId(set_id ) response = client.do_action_with_exception(createReq) print response 运行结果 { "RequestId": "F296C6E7-2213-4934-910B-0436B9F1C71F", "SuccessDetails": [ { "Tags": [ { "ParentTagId": "11", "TagScore": "0.8965469", "TagLevel": "2", "TagId": "0", "ParentTagName": "运动", "TagName": "其他" }, { "ParentTagId": "10", "TagScore": "0.7168899", "TagLevel": "2", "TagId": "655", "ParentTagName": "其他", "TagName": "棒球守备位置" }, { "ParentTagId": "11", "TagScore": "0.55166656", "TagLevel": "2", "TagId": "50", "ParentTagName": "运动", "TagName": "球赛" }, { "ParentTagId": "10", "TagScore": "0.53409994", "TagLevel": "2", "TagId": "940", "ParentTagName": "其他", "TagName": "场地" }, { "ParentTagId": "0", "TagScore": "0.5216745", "TagLevel": "2", "TagId": "159", "ParentTagName": "人物", "TagName": "比赛者" }, { "ParentTagId": "0", "TagScore": "0.5185509", "TagLevel": "2", "TagId": "65", "ParentTagName": "人物", "TagName": "足球运动员" }, { "ParentTagId": "0", "TagScore": "0.5162505", "TagLevel": "2", "TagId": "54", "ParentTagName": "人物", "TagName": "运动员" }, { "ParentTagId": "0", "TagScore": "0.5147973", "TagLevel": "2", "TagId": "133", "ParentTagName": "人物", "TagName": "棒球运动员" }, { "ParentTagId": "10", "TagScore": "0.5040618", "TagLevel": "2", "TagId": "453", "ParentTagName": "其他", "TagName": "球游戏" } ], "SrcUri": "oss://co-user-cn-beijing/zqh/input/TagSet/baseball.jpg" } ], "FailDetails": [], "SetId": "TAG-9d79cc61-0f2b-4d4d-931a-377bcc641878", "SuccessIndexNum": "1" } 列出数据集检测出的标签。 本示例目的是展示关键参数,其余参数具体请参考ListTagNames。 代码示例 from aliyunsdkimm.request.v20170906 import ListTagNamesRequest project = "python-sdk-demo-professional" #演示用project已创建,您需要自己创建 set_id = 'TAG-9d79cc61-0f2b-4d4d-931a-377bcc641878' createReq = ListTagNamesRequest.ListTagNamesRequest() createReq.set_Project(project) createReq.set_SetId(set_id ) response = client.do_action_with_exception(createReq) print response 运行结果 { "Tags": [ { "Num": 1, "TagName": "场地" }, { "Num": 1, "TagName": "女人" }, { "Num": 1, "TagName": "晚餐" }, { "Num": 1, "TagName": "棒球守备位置" }, { "Num": 1, "TagName": "棒球运动员" }, { "Num": 2, "TagName": "其他" }, { "Num": 1, "TagName": "八宝饭" }, { "Num": 1, "TagName": "午餐" }, { "Num": 1, "TagName": "比赛者" }, { "Num": 1, "TagName": "人" } ], "RequestId": "D59C1305-F01A-46DF-8E66-22A334F43F35" }

优秀的个人博客,低调大师

android中的多媒体应用camera

MainActivity.java 代码 packagecom.amaker.ch11.app; importjava.io.File; importjava.io.FileOutputStream; importjava.io.IOException; importandroid.app.Activity; importandroid.graphics.PixelFormat; importandroid.hardware.Camera; importandroid.os.AsyncTask; importandroid.os.Bundle; importandroid.os.Environment; importandroid.view.KeyEvent; importandroid.view.SurfaceHolder; importandroid.view.SurfaceView; publicclassMainActivityextendsActivity{ //声明拍照界面组件SurfaceView privateSurfaceViewsurfaceView; //声明界面控制组件SurfaceHolder privateSurfaceHoldersurfaceHolder; //声明照相机 privateCameracamera; @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); //实例化拍照界面组件 surfaceView=(SurfaceView)findViewById(R.id.preview); //从SurfaceView中获得SurfaceHolder surfaceHolder=surfaceView.getHolder(); //为SurfaceHolder添加回调 surfaceHolder.addCallback(surfaceCallback); surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); } //响应按键事件 @Override publicbooleanonKeyDown(intkeyCode,KeyEventevent){ if(keyCode==KeyEvent.KEYCODE_CAMERA||keyCode==KeyEvent.KEYCODE_SEARCH){ takePic(); returntrue; } returnsuper.onKeyDown(keyCode,event); } //拍照方法 privatevoidtakePic(){ //停止预览 camera.stopPreview(); //拍照 camera.takePicture(null,null,pictureCallback); } //照片回调 Camera.PictureCallbackpictureCallback=newCamera.PictureCallback(){ @Override publicvoidonPictureTaken(byte[]data,Cameracamera){ newSavePictureTask().execute(data); camera.startPreview(); } }; //保存照片任务类 classSavePictureTaskextendsAsyncTask<byte[],String,String>{ @Override protectedStringdoInBackground(byte[]...params){ //创建文件 Filepicture=newFile(Environment.getExternalStorageDirectory(),"picture.jpg"); //如果文件存在删除掉 if(picture.exists())picture.delete(); try{ //获得文件输出流 FileOutputStreamfos=newFileOutputStream(picture.getPath()); //写到该文件 fos.write(params[0]); //关闭文件流 fos.close(); }catch(Exceptione){ e.printStackTrace(); } returnnull; } } //SurfaceHodler回调,处理打开相机,关闭相机以及照片尺寸的改变 SurfaceHolder.CallbacksurfaceCallback=newSurfaceHolder.Callback(){ @Override publicvoidsurfaceCreated(SurfaceHolderholder){ //打开相机 camera=Camera.open(); try{ //设置预览 camera.setPreviewDisplay(holder); }catch(IOExceptione){ e.printStackTrace(); } } @Override publicvoidsurfaceChanged(SurfaceHolderholder,intformat,intwidth, intheight){ //获得相机参数 Camera.Parametersparameters=camera.getParameters(); //设置照片大小 parameters.setPreviewSize(width,height); //设置照片格式 parameters.setPictureFormat(PixelFormat.JPEG); //设置相机参数 camera.setParameters(parameters); //开始预览 camera.startPreview(); } @Override publicvoidsurfaceDestroyed(SurfaceHolderholder){ //停止预览 camera.stopPreview(); //释放相机资源 camera.release(); camera=null; } }; } 代码 package com.amaker.ch11.app; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import android.app.Activity; import android.graphics.PixelFormat; import android.hardware.Camera; import android.os.AsyncTask; import android.os.Bundle; import android.os.Environment; import android.view.KeyEvent; import android.view.SurfaceHolder; import android.view.SurfaceView; public class MainActivity extends Activity { // 声明拍照界面组件SurfaceView private SurfaceView surfaceView; // 声明界面控制组件SurfaceHolder private SurfaceHolder surfaceHolder; // 声明照相机 private Camera camera; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 实例化拍照界面组件 surfaceView = (SurfaceView)findViewById(R.id.preview); // 从SurfaceView中获得SurfaceHolder surfaceHolder = surfaceView.getHolder(); // 为SurfaceHolder 添加回调 surfaceHolder.addCallback(surfaceCallback); surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); } // 响应按键事件 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode==KeyEvent.KEYCODE_CAMERA||keyCode==KeyEvent.KEYCODE_SEARCH){ takePic(); return true; } return super.onKeyDown(keyCode, event); } // 拍照方法 private void takePic(){ // 停止预览 camera.stopPreview(); // 拍照 camera.takePicture(null,null, pictureCallback); } // 照片回调 Camera.PictureCallback pictureCallback = new Camera.PictureCallback() { @Override public void onPictureTaken(byte[] data, Camera camera) { new SavePictureTask().execute(data); camera.startPreview(); } }; // 保存照片任务类 class SavePictureTask extends AsyncTask<byte[],String,String>{ @Override protected String doInBackground(byte[]... params) { // 创建文件 File picture = new File(Environment.getExternalStorageDirectory(),"picture.jpg"); // 如果文件存在删除掉 if(picture.exists())picture.delete(); try { // 获得文件输出流 FileOutputStream fos = new FileOutputStream(picture.getPath()); // 写到该文件 fos.write(params[0]); // 关闭文件流 fos.close(); } catch (Exception e) { e.printStackTrace(); } return null; } } // SurfaceHodler 回调,处理打开相机,关闭相机以及照片尺寸的改变 SurfaceHolder.Callback surfaceCallback = new SurfaceHolder.Callback() { @Override public void surfaceCreated(SurfaceHolder holder) { // 打开相机 camera = Camera.open(); try { // 设置预览 camera.setPreviewDisplay(holder); } catch (IOException e) { e.printStackTrace(); } } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // 获得相机参数 Camera.Parameters parameters = camera.getParameters(); // 设置照片大小 parameters.setPreviewSize(width, height); // 设置照片格式 parameters.setPictureFormat(PixelFormat.JPEG); // 设置相机参数 camera.setParameters(parameters); // 开始预览 camera.startPreview(); } @Override public void surfaceDestroyed(SurfaceHolder holder) { // 停止预览 camera.stopPreview(); // 释放相机资源 camera.release(); camera = null; } }; } 本文转自linzheng 51CTO博客,原文链接:http://blog.51cto.com/linzheng/1079348

优秀的个人博客,低调大师

android中的多媒体应用MediaPlayer

MediaPlayer可以播放音频和视频,另外也可以通过VideoView来播放视频,虽然VideoView比MediaPlayer简单易用,但定制性不如用MediaPlayer,要视情况选择了。MediaPlayer播放音频比较简单,但是要播放视频就需要SurfaceView。SurfaceView比普通的自定义View更有绘图上的优势,它支持完全的OpenGL ES库。 迷你音乐播放器 /Chapter11_Media_MiniPlayer/src/com/amaker/test/MainActivity.java 代码 packagecom.amaker.test; importandroid.app.Activity; importandroid.app.AlertDialog; importandroid.media.MediaPlayer; importandroid.os.Bundle; importandroid.view.View; importandroid.widget.ImageButton; publicclassMainActivityextendsActivityimplementsMediaPlayer.OnCompletionListener{ privateImageButtonplay,pause,stop; privateMediaPlayermp; @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); play=(ImageButton)findViewById(R.id.play); pause=(ImageButton)findViewById(R.id.pause); stop=(ImageButton)findViewById(R.id.stop); play.setOnClickListener(newView.OnClickListener(){ publicvoidonClick(Viewview){ play(); } }); pause.setOnClickListener(newView.OnClickListener(){ publicvoidonClick(Viewview){ pause(); } }); stop.setOnClickListener(newView.OnClickListener(){ publicvoidonClick(Viewview){ stop(); } }); setup(); } @Override publicvoidonDestroy(){ super.onDestroy(); if(stop.isEnabled()){ stop(); } } publicvoidonCompletion(MediaPlayermp){ stop(); } privatevoidplay(){ mp.start(); play.setEnabled(false); pause.setEnabled(true); stop.setEnabled(true); } privatevoidstop(){ mp.stop(); pause.setEnabled(false); stop.setEnabled(false); try{ mp.prepare(); mp.seekTo(0); play.setEnabled(true); } catch(Throwablet){ error(t); } } privatevoidpause(){ mp.pause(); play.setEnabled(true); pause.setEnabled(false); stop.setEnabled(true); } privatevoidloadClip(){ try{ mp=MediaPlayer.create(this,R.raw.test); mp.setOnCompletionListener(this); } catch(Throwablet){ error(t); } } privatevoidsetup(){ loadClip(); play.setEnabled(true); pause.setEnabled(false); stop.setEnabled(false); } privatevoiderror(Throwablet){ AlertDialog.Builderbuilder=newAlertDialog.Builder(this); builder .setTitle("报错啦!") .setMessage(t.toString()) .setPositiveButton("确定",null) .show(); } } /Chapter11_Media_MiniPlayer/res/layout/main.xml 代码 <?xmlversion="1.0"encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical"android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="迷你音乐播放器"/> <LinearLayout android:orientation="horizontal"android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageButton android:id="@+id/play" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/play" /> <ImageButton android:id="@+id/pause" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/pause" /> <ImageButton android:id="@+id/stop" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/stop" /> </LinearLayout> </LinearLayout> /Chapter11_Media_MiniPlayer/AndroidManifest.xml 代码 <?xmlversion="1.0"encoding="utf-8"?> <manifestxmlns:android="http://schemas.android.com/apk/res/android" package="com.amaker.test" android:versionCode="1" android:versionName="1.0"> <applicationandroid:icon="@drawable/icon"android:label="@string/app_name"> <activityandroid:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <actionandroid:name="android.intent.action.MAIN"/> <categoryandroid:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> <uses-sdkandroid:minSdkVersion="3"/> </manifest> 本文转自linzheng 51CTO博客,原文链接:http://blog.51cto.com/linzheng/1081707

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册