位置: 编程技术 - 正文
推荐整理分享全志A31S(android 4.2/4.4)截屏(全志科技在国内芯片界地位),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:全志科技2023目标价,全志科技,全志芯片,全志科技股吧,全志科技股吧,全志科技股吧,全志科技,全志科技,内容如对您有帮助,希望把文章链接给更多的朋友!
转毕业也快三年了。最近找不到方向,有点迷茫了。主要是找不到什么事情去做,可能因为自己不是一个愿意主动去学习的人。
闲着也是没事,就把自己接的一些私活的源码分享出来写写blog吧,算是给自己一点活做吧。
言归正传,最近在做的一个私活中某一个功能是广告机(android,已经root了)截屏然后传给其他android/ios设备。因为传输对时间要求不是太高,且适配与android和ios。所以设计的基本思路是: 截屏->转化成png->传输给android/ios;
手里的设备是全志AS(android 4.2)的机顶盒,截屏转化为png的作都是在机顶盒上。网上关于截屏的代码和分析太多太多,很多也给了源码和分析思路。我这也是沿着前面大牛的道路走下去的,代码也是抄的他们。大家找到的所有关于后台截屏的思路应该就两个:一个是调用android 4.0以上系统的隐藏api :screenshot,一个是调用framebuffer中的数据。这篇文章就先给出调用隐藏api的思路和代码:
后台service提供截屏方法,当机顶盒收到某条消息(类与广播)调用该service方法。
public class CapturePictureService extends Service { private Context mContext; private static final String IMAGE_PATH = ""; @Override public IBinder onBind(Intent arg0) { // TODO Auto-generated method stub return null; } @Override public void onCreate() { // TODO Auto-generated method stub super.onCreate(); mContext = this; } @Override public int onStartCommand(Intent intent, int flags, int startId) { // TODO Auto-generated method stub takeScreenShot(IMAGE_PATH); return super.onStartCommand(intent, flags, startId); } public boolean takeScreenShot(String imagePath) { if (imagePath.equals("")) { imagePath = Environment.getExternalStorageDirectory() File.separator "Screenshot.png"; } Bitmap mScreenBitmap; WindowManager mWindowManager; DisplayMetrics mDisplayMetrics; Display mDisplay; mWindowManager = (WindowManager) mContext .getSystemService(Context.WINDOW_SERVICE); mDisplay = mWindowManager.getDefaultDisplay(); mDisplayMetrics = new DisplayMetrics(); mDisplay.getRealMetrics(mDisplayMetrics); float[] dims = { mDisplayMetrics.widthPixels, mDisplayMetrics.heightPixels }; mScreenBitmap = Surface.screenshot((int) dims[0], (int) dims[1]); if (mScreenBitmap == null) { return false; } try { // FileOutputStream out = new FileOutputStream("/mnt/media/test" // ".png"); FileOutputStream out = new FileOutputStream(imagePath); mScreenBitmap.compress(Bitmap.CompressFormat.PNG, , out); } catch (Exception e) { e.printStackTrace(); return false; } return true; }}上面需要注意的是,需要<uses-permission android:name="android.permission.READ_FRAME_BUFFER" /> 权限,且Surface.screenshot这个api是android隐藏api,所以大家在eclipse中是会报错的,该代码需要在android源码中编译。 在全志提供的源码中4.2和4.4的该接口也是不一样的,4.2是Surface.screenshot((int) dims[0], (int) dims[1]); 4.4是SurfaceControl.screenshot((int) dims[0], (int) dims[1]);(需要用到import android.view.SurfaceControl;)
版权声明:本文为博主原创文章,未经博主允许不得转载。
Android Handler Message多线程实例 什么是Handlerhandler通俗一点讲就是用来在各个进程之间发送数据的处理对象。在任何进程中,只要获得了另一个进程的handler则可以通过handler.sendMessage(mes
Popupwindow 属性设置 1、itemname=android:windowBackground@android:color/transparent/item窗口背景色2、itemname=android:windowFrame@null/itemDialog的windowFrame框为无4、itemname=android:windowIsFloatingtrue/item
浅谈android4.0开发之GridLayout布局 转自:
标签: 全志科技在国内芯片界地位
本文链接地址:https://www.jiuchutong.com/biancheng/370870.html 转载请保留说明!上一篇:android真机调试 INSTALL_FAILED_MEDIA_UNAVAILABLE 问题解决方案(android真机调试解析包错误)
友情链接: 武汉网站建设