获取android 显卡数据?从电脑上**软件到android软件怎么安装
一、从电脑上**软件到android软件怎么安装
Windows平台上的应用程序已经非常成熟了,但让人感到遗憾的是,一些非常实用的移动应用程序却一直没有登陆Windows平台。但如果这款应用能在Android上运行,那好消息来了。在第三方软件的帮助下,你是可以在Windows计算机上运行它的。
但是,在PC上运行Android应用可要比直接安装Windows应用复杂一些。在本文当中,我们就将为你提供在Windows计算机上运行Android应用的详尽指导。
Android模拟器及使用方法
在Windows计算机上运行Android应用的方法之一是使用Android模拟器。模拟器是以相当复杂的代码编写而成的,但它们的基本概念并不难理解:让你的计算机模拟另一种设备类型的工作方式。具体到这里,Android模拟器会让你的Windows计算机像Android设备一样运行。
作为一种硬件媒介,Android模拟器会向应用提供在Windows计算机上运行所需要的内存、处理性能和存储空间。它们还会将Android设备的硬件映射到计算机外设上,你可以通过音箱听到应用的音效和音乐,Skype这些聊天应用则可以识别计算机的麦克风和摄像头。
实际上,计算机运行Android应用的效果可能会比手机或平板更好,但这主要取决于你使用的硬件。
不过Android模拟器的大优势是它们能像普通Windows应用那样运行。你可以从系统桌面或开始菜单运行它们,并随意移动运行窗口或调整其大小。
Bluestacks
BluestacksAppPlayer是目前性能强大的Android模拟器之一。它的个性化界面设计让开关模拟器设置和运行应用变得非常简单,所谓的Layercake技术可利用硬件加速器来提高Android游戏在Windows中的运行效果。
值得注意的是,Bluestacks虽然是免费的,但用户可以通过付费订阅(2美元/月)来获得高级支持和更多功能。
硬件配置要求
2GBRAM
4GB磁盘空间
DirectX9.0或更高
安装Bluestacks非常简单,和其他Windows应用没有区别。你需要从Bluestacks****安装程序,然后运行安装程序并选择应用和数据文件的存储位置。遗憾的是,Bluestacks的安装目录是无法更改的,它只能被安装在计算机的引导盘当中。
特色功能
Bluestacks拥有一些不同于其他Android模拟器的独特控制功能。
其界面左侧的控制侧边栏提供了你需要的大多数控制功能,比如更改窗口朝向的开关、截图工具、文件传输应用的快捷键(将文件从桌面**到Bluestacks的虚拟存储空间)等。
Bluestacks还拥有自己的串流平台BluestacksTV。如果你拥有Facebook或Twitch帐号,计算机的内存在8GBRAM以上,就可以直接从Bluestacks窗口直播应用和游戏。Bluestacks应用可让你校准相连的麦克风、连接摄像头、并在直播之前预览画面内容、或是从弹出窗口当中对Facebook评论或Twitch信息进行回应。你也可以通过Bluestacks观看其他人的直播,或是根据安装的应用浏览生成的游戏列表。
Bluestacks还对游戏手柄提供了即插即用支持。当你将无线/有线Xbox手柄插入PC,或是匹配一支蓝牙手柄,Bluestacks也会对其进行识别。
BluestacksAppCast可让你运行手机上的游戏和应用,但你需要先在手机上安装AppCast应用,然后通过Google凭据登陆。完成准备工作之后,你就可以看到手机上的应用列表,点击其中一个就能在计算机上将其运行。
DuOS
DuOS是AmericanMegatrendsIncorporated所研发的一款Android模拟器。广大Windows用户对于这家公司一定不会感到陌生,数以百万计Windows计算机所使用的BIOS固件正是他们所研发的。
和Bluestacks一样,DuOS也能以窗口模式运行AndroidMarshmallow,但它所提供的个性化体验就要少得多了。你需要进入Android设置菜单当中调节大多数的选项,如果想绕过GooglePlay安装应用程序,你先得把安装文件**到PC,右键单机该文件,然后选择“应用于DuOS”。
但和原生Android相比,DuOS也不是没有自己的优势。它为旋转屏幕、放大、滑动和倾斜都安排了快捷键,同时也能支持麦克风和摄像头等外设。你还能设置一个在Windows和DuOS应用之间进行数据分析的文件夹,以及DuOS使用的RAM大小,以防它影响到系统本身的性能。
DuOS是一款收费应用,价格为10美元,不过它提供了30天的免费试用。
DuOS的硬件配置要求如下:
1.英特尔x86处理器
2.BIOS支持并开启硬件虚拟化技术
3.OpenGL3.0
4.2GBRAM,但建议为3GBRAM
5.2GB磁盘空间
GoogleChrome
如果你不想那么麻烦,谷歌的Chrome浏览器也能让你在Windows计算机上运行Android应用。在2014年,谷歌推出AndroidRuntimeforChrome,一种用来在计算机上安装Android应用的兼容层和沙盒技术,它运行Android应用的速度也达到了媲美原版的程度。
遗憾的是,AndroidRuntimeforChrome并不支持所有Android应用,将应用转换成ARC可以理解的格式也是一件相当艰巨的任务。此外,那些依赖于第三方服务的应用——比如谷歌的Gmail客户端——也无**常运行。
但是,ARC或许是轻量级的Android模拟器了,它也是安装简单的——只要你电脑里安装了Chrome浏览器,就能立刻使用它。
如何在Chrome中安装Android应用
ARC是为谷歌ChromeOS所设计的。想让它在Windows上工作,你需要**第三方工具ARChonCustomRuntime。此外,你的Chrome版本必须在37以上。
1.**并解压ARChonCustomRuntime。
2.进入菜单>更多工具>扩展程序。
3.在页面右上角勾选开发者模式。
4.选择包含ARChon的文件夹。
找到自己想要安装的应用之后,遵照以下步骤进行安装:
1.解压文件。
2.在Chrome中开启扩展程序页面。
3.点击“加载已解压的扩展程序”。
4.选择包含应用程序的文件夹。
5.想要运行该应用,你可以在扩展程序页面当中找到它。
由于ARC所支持的应用数量并不多,如果你想要安装并不在支持列表中的应用,可以使用名叫chromeos-apk的小工具来对其进行重新封装。虽然过程有点复杂,但适用于大多数不依赖原生Android或谷歌服务的Android应用。
如何使用chromeos-apk转换Android应用:
1.**安装文件。
2.安装node.js。
3.开启**文件夹中的Windows命令行,输入npminstallchromeos-apk-g,即可完成chromeos-apk的安装。
随后你需要**应用程序的apk文件,并通过chromeos-apk运行它。具体方法是在放置安装文件的文件夹中开启命令行,然后输入chromeos-apk[APK文件名称],然后点击回车。
你可能会被要求提供应用的软件包名称,获取它的简单方式是查看Play商店相关应用的URL地址,找到“?id=”之后的内容,这就是应用的软件包名称。举个例子,Evernote的软件包名称就是“com.evernote”
当你完成对应用程序的修改之后,就可以根据上文的步骤将其安装在Chrome当中了。
双系统启动
除了Android模拟器之外,还有一种办法能让你用上更新版本的Android,但步骤稍微复杂一些,它就是安装双系统。这种方法可以把你的计算机变成一部Android设备,系统的运行和在手机/平板上几乎没有区别。在开机时,你可以选择到底是启动Android还是Windows系统。
安装双系统的方法要比安装原生Android系统更加复杂。因为处理器、显卡和硬盘这些计算机硬件都必须由第三方开发者添加到Android,因此你需要找到能够支持你PC硬件配置的自定义版本。
RemixOS
RemixOS是一款基于Android的桌面式*作系统。它的界面风格和Windows以及ChromeOS都有相似之处,但却能运行几乎所有的Android应用。
RemixOS还能全面支持键盘和鼠标,重新设计的Android任务栏可让你在后台运行的应用之间进行轻松切换。它还提供了截屏和文件管理等不少实用工具。
一般的双系统版本Android在升级时都需要重新安装,但RemixOS是支持OTA升级的。也就是说,你可以像在手机上一样从设置菜单当中检查并安装系统升级。
但值得注意的是,RemixOS的系统版本并非是新的Nougat,而是Marshmallow,它也无法支持每一种PC配置。
硬件配置要求:
8GBUSB3.0闪存驱动器,支持FAT32,低写入速度20MB/s
如何安装RemixOS:
1.**RemixOSforPC软件包,当中包含你需要的所有文件。
2.运行RemixOS安装工具。依照指示在计算机硬盘上安装RemixOSforPC。
3.重启计算机。如果你的计算机开启了UEFI启动,请确保安全启动处于关闭状态。
4.在Windows启动菜单当中选择RemixOS。
如果你想节省硬件空间,或者是想要把Android随身携带,你可以把RemixOS安装在U盘当中。不过你使用的U盘必须支持USB3.0,可用空间在8GB以上,写入速度在20MB/s以上。
如何将RemixOS安装在U盘
1.**RemixOSforPC软件包。
2.将U盘插入PC。
3.运行RemixOS安装工具,依照指导进行安装。
4.重启计算机。如果你的计算机开启了UEFI启动,请确保安全启动处于关闭状态。
5.在启动项当中选择“USB存储设备”。
6.选择访客模式或普通模式启动RemixOS。
Android-X86
Android-X86是一个旨在将新版本Android移植到Windows平台的开源项目。不同于用户界面模仿PC*作系统的RemixOS,Android-X86是原生的Android系统,和运行在手机/平板中的版本完全相同。
由于原生版Android并未对PC进行过优化,Android-X86使用起来可能不够直观。比如说,检查通知需要你点击并拖动通知栏,应用则会占据整块屏幕——你无法像在RemixOS里那样对窗口大小进行调整。
但Android-X86可让你根据自己的喜好对Android进行个性化。你可以安装第三方主题和主页面,而不必担心它们无法兼容系统。
如何安装Android-X86
1.**与计算机型号相对应的新版Android-X86镜像文件。如果你的设备不再支持列表之内,就**通用版本。
2.**UNetbootin。
3.开启UNetbootin并选择Android-X86的镜像文件。
4.从选项列表中选择U盘,点击OK,然后等待UNetbootin把Android-X86**并安装到你的U盘当中。
5.重启计算机。
6.启动到设备选择界面,选择U盘。
7.在UNetbootin菜单中选择“安装Android-X86到硬盘”。
8.选择你希望安装Android-X86的分区或路径,程序会询问你是否想要格式化磁盘。如果你不确定的话,选否。
9.程序会询问你是否想要安装GRUB,选择是。
10.程序会询问你是否想让系统支持读写,同意之后Android-X86就可以在硬盘上读取和写入数据了。
11.再次重启计算机。
AndroidOnIntelPlatforms
作为处理器巨头的英特尔也拥有自己的Android版本:AndroidOnIntelPlatforms。和Android-X86一样,它也是一个能在Windows设备上运行的未修改Android版本,给人的感觉同样有点粗糙。
它所支持的设备目前仅有两款:英特尔的NUC台式机和戴尔XPS12。它使用的系统版本是Lollipop,距今已经落后了2个时代。
但AndroidOnIntel也有自己吸引人的地方。它是安装简单的Android版本,也是运行稳定的双系统Android版本。
如何在PC上安装AndroidOnIntelPlatforms:
1.从****AndroidOnIntelPlatforms安装器。
2.将**好的文件移动至U盘。
3.将计算机设置到从USB启动,并开启“UEFI启动支持”。
4.安装文件。
二、如何写一个Android USB接口驱动
说到 android驱动是离不开 Linux驱动的。Android内核采用的是 Linux2.6内核(近Linux 3.3已经包含了一些 Android代码)。但 Android并没有完全照搬 Linux系统内核,除了对Linux进行部分修正,还增加了不少内容。android驱动主要分两种类型:Android专用驱动和 Android使用的设备驱动(linux)。
Android专有驱动程序:
1)Android Ashmem匿名共享内存;为用户空间程序提供分配内存的机制,为进程间提供大块共享内存,同时为内核提供回收和管理这个内存。
2)Android Logger轻量级的LOG(日志)驱动;
3)Android Binder基于 OpenBinder框架的一个驱动;
4)Android Power Management电源管理模块;
5)Low Memory Killer低内存管理器;
6)Android PMEM物理内存驱动;
7)USB Gadget USB驱动(基于 gaeget框架);
8)Ram Console用于调试写入日志信息的设备;
9)Time Device定时控制设备;
10)Android Alarm硬件时钟;
Android上的设备驱动:
1)Framebuff显示驱动;
2)Event输入设备驱动;
3)ALSA音频驱动;
4)OSS音频驱动;
5)v412摄像头:视频驱动;
6)MTD驱动;
7)蓝牙驱动;
8)WLAN设备驱动;
Android专有驱动程序
1.Android Ashmem
为用户空间程序提供分配内存的机制,为进程间提供大块共享内存,同时为内核提供回收和管理这个内存。
设备节点:/dev/ashmen.主设备号 10.
源码位置: include/linux/ashmen.h Kernel/mm/ashmen.c
相比于 malloc和 anonymous/named mmap等传统的内存分配机制,其优势是通过内核驱动提供了辅助内核的内存回收算法机制(pin/unoin)
2.Android Logger
无论是底层的源代码还上层的应用,我们都可以使用 logger这个日志设备看、来进行调试。
设备节点:/dev/log/main/dev/log/event/dev/log/radio
源码位置:include/linux/logger.h include/linux/logger.c
3.Android Binder
IPC Binder一种进程间通信机制。他的进程能够为其它进程提供服务-----通过标准的 Linux系统调用 API。
设备节点:/dev/**nder
源码位置:Kernel/include/linux/**nder.h Kernel/drivers/misc/**nder.c
4.Android Power Management
一个基于标准 linux电源管理的轻量级 Android电源管理系统,在 drivers/android/power.c kernel/power/
5.Low Memory Killer
它在用户空间中指定了一组内存临界值,当其中某个值与进程描述中的 oom_adj值在同一范围时,该进程将被Kill掉(在parameters/adj中指定oome_adj的小值)。它与标准的Linux OOM机制类似,只是实现方法不同
源码位置:drivers/misc/lowmemorykiller.c
6.Android PMEM
PMEM主要作用就是向用户空间提供连续的物理内存区域。
1.让 GPU或 VPU缓冲区共享 CPU核心。
2.用于 Android service堆。
源码位置:include/linux/android_pmem.h drivers/android/pmem.c
7.USB Gadget
基于标准 Linux USB gaeget驱动框架的设备驱动。
源码位置:drivers/u**/gadet/
8.Ram Console
为了提供调试功能,android允许将调试日志信息写入这个设备,它是基于 RAM的 buffer.
源码位置: drivers/staging/android/ram_console.c
9.Time Device
定时控制,提供了对设备进行定时控制的功能。
源码位置:drivers/staging/android/timed_output.c(timed_gpio.c)
10.Android Alarm
提供一个定时器,用于把设备从睡眠状态唤醒,同时它还提供了一个即使在设备睡眠时也会运行的时钟基准。
设备节点:/dev/alarm
源码位置:drivers/trc/alarm.c
Android设备驱动
1. Framebuffer帧缓存设备
Framebuffer驱动在 Linux中是标准的显示设备的驱动。对于 PC系统,它是显卡的驱动;对于嵌入式 SOC处理器系统,它是 LCD控制器或者其他显示控制器的驱动。它是一个字符设备,在文件系统中设备节点通常是/dev/fbx。每个系统可以有多个显示设备,依次用/dev/fbO、/dev/fb l
等来表示。在 Android系统中主设备号为 29,次设备号递增生成。
Android对 Framebuffer驱动的使用方式是标准的,在/ dev/ graphie/中的 Framebuffer设备节点由 init进程自动创建,被 libui库调用。 Android的 GUI系统中,通过调用 Framebuffer驱动的标准接口,实现显示设备的抽象。
Framebuff的结构框架和实现:
linux LCD驱动(二)--FrameBuffer
Linux LCD驱动(四)--驱动的实现
2.Event输入设备驱动
Input驱动程序是 Linux输入设备的驱动程序,分为游戏杆(joystick)、鼠标(mouse和 mice)和**设备(Event queue)3种驱动程序。其中**驱动程序是目前通用的程序,可支持键盘、鼠标、触摸屏等多种输入设备。 Input驱动程序的主设备号是 l3,每一种 Input设备从设备号占用5位, 3种从设备号分配是:游戏杆 0~ 61; Mouse鼠标 33~ 62; Mice鼠标 63;**设备 64~ 95,各个具体的设备在 misc、 touchscreen、 keyboard等目录中。
Event设备在用户空问使用 read、 ioctl、 poll等文件系统的接口*作, read用于读取输入信息, ioctl用于获取和设置信息, poll用于用户空间的阻塞,当内核有按键等中断时,通过在中断中唤醒内核的 poll实现。
Event输入驱动的架构和实现:
Linux设备驱动之——input子系统
3.ALSA音频驱动
高级 Linux声音体系 ALSA(Advanced Linux Sound Architecture)是为音频系统提供驱动的Linux内核组件,以替代原先的开发声音系统 OSS。它是一个完全开放源代码的音频驱动程序集,除了像 OSS那样提供一组内核驱动程序模块之外, ALSA还专门为简化应用程序的编写提供相应的函数库,与 OSS提供的基于 ioctl等原始编程接口相比, ALSA函数库使用起来要更加方便一些
利用该函数库,开发人员可以方便、快捷地开发出自己的应用程序,细节则留给函数库进行内部处理。所以虽然 ALSA也提供了类似于 OSS的系统接口,但建议应用程序开发者使用音频函数库,而不是直接调用驱动函数。
ALSA驱动的主设备号为 116,次设备号由各个设备单独定义,主要的设备节点如下:
/ dev/ snd/ contmlCX——主控制;
/ dev/ snd/ pcmXXXc—— PCM数据通道;
/ dev/ snd/ seq——顺序器;
/ dev/ snd/ timer——定义器。
在用户空问中, ALSA驱动通常配合 ALsA库使用,库通过 ioctl等接口调用 ALSA驱动程序的设备节点。对于 AIJSA驱动的调用,调用的是用户空间的 ALsA库的接口,而不是直接调用 ALSA驱动程序。
ALSA驱动程序的主要头文件是 include/ sound./ sound. h,驱动核心数据结构和具体驱动的注册函数是 include/ sound/ core. h,驱动程序的核心实现是 Sound/ core/ sound. c文件。
ALSA驱动程序使用下面的函数注册控制和设备:
int snd _ pcm _ new(struct snd _ card* card, char* id, int device, int playback _ count, int capture _ count, struct snd _ pcm** rpcm);
int snd ctl _ add(struct snd _ card* card, struct snd _ kcontrol* kcontro1);
ALSA音频驱动在内核进行 menuconfig配置时,配置选项为“ Device Drivers”>“ Sound c ard support”一>“ Advanced Linux Sound Architecture”。子选项包含了 Generic sound devices(通用声音设备)、 ARM体系结构支持,以及兼容 OSS的几个选项。 ALsA音频驱动配置对应的文件是sound/ core/ Kconfig。
Android没有直接使用 ALSA驱动,可以基于 A-LSA驱动和 ALSA库实现 Android Audio的硬件抽象层; ALSA库调用内核的 ALSA驱动, Audio的硬件抽象层调用 ALSA库。
4.OSS音频驱动
OSS(Open Sound System开放声音系统)是 linux上早出现的声卡驱动。OSS由一套完整的内核驱动程序模块组成,可以为绝大多数声卡提供统一的编程接口。
OSS是字符设备,主设备号14,主要包括下面几种设备文件:
1)/dev/sndstat
它是声卡驱动程序提供的简单接口,它通常是一个只读文件,作用也只限于汇报声卡的当前状态。(用于检测声卡)
2)/dev/dsp
用于数字采样和数字录音的设备文件。对于音频编程很重要。实现模拟信号和数字信号的转换。
3)/dev/audio
类似于/dev/dsp,使用的是 mu-law编码方式。
4)/dev/mixer
用于多个信号组合或者叠加在一起,对于不同的声卡来说,其混音器的作用可能各不相同。
5)/dev/sequencer
这个设备用来对声卡内建的波表合成器进行*作,或者对 MIDI总线上的乐器进行控制。
OSS驱动所涉及的文件主要包括:
kernel/include/linux/soundcard.h
kernel/include/linux/sound.h定义 OSS驱动的次设备号和注册函数
kernel/sound_core.c OSS核心实现部分
5.V4l2视频驱动
V4L2是V4L的升级版本,为linux下视频设备程序提供了一套接口规范。包括一套数据结构和底层V4L2驱动接口。V4L2提供了很多访问接口,你可以根据具体需要选择*作方法。需要注意的是,很少有驱动完全实现了所有的接口功能。所以在使用时需要参考驱动源码,或仔细阅读驱动提供者的使用说明。
V4L2的主设备号是81,次设备号:0~255,这些次设备号里也有好几种设备(视频设备、Radio设备、Teletext、VBI)。
V4L2的设备节点:/dev/videoX,/dev/v**X and/dev/radioX
Android设备驱动(下)
MTD驱动
Flash驱动通常使用 MTD(memory technology device),内存技术设备。
MTD的字符设备:
/dev/mtdX
主设备号 90.
MTD的块设备:
/dev/block/mtdblockX
主设备号 13.
MTD驱动源码
drivers/mtd/mtdcore.c:MTD核心,定义MTD原始设备
drivers/mtd/mtdchar.c:MTD字符设备
drivers/mtd/mtdblock.c:MTD块设备
MTD驱动程序是 Linux下专门为嵌入式环境开发的新一类驱动程序。Linux下的 MTD驱动程序接口被划分为用户模块和硬件模块:
用户模块提供从用户空间直接使用的接口:原始字符访问、原始块访问、FTL(Flash Transition Layer)和JFS(Journaled File System)。
硬件模块提供内存设备的物理访问,但不直接使用它们,二十通过上述的用户模块来访问。这些模块提供了闪存上读、写和擦除等*作的实现。
蓝牙驱动
在 Linux中,蓝牙设备驱动是网络设备,使用网络接口。
Android的蓝牙协议栈使用BlueZ实现来对GAP, SDP以及RFCOMM等应用规范的支持,并获得了SIG认证。由于Bluez使用GPL授权,所以Android框架通过D-BUS IPC来与bluez的用户空间代码交互以避免使用未经授权的代码。
蓝牙协议部分头文件:
include/net/bluetooth/hci_core.h
include/net/bluetooth/bluetooth.h
蓝牙协议源代码文件:
net/bluetooth/*
蓝牙驱动程序部分的文件:
drivers/bluetooth/*
蓝牙的驱动程序一般都通过标准的HCI控制实现。但根据硬件接口和初始化流程的不同,又存在一些差别。这类初始化动作一般是一些晶振频率,波特率等基础设置。比如CSR的芯片一般通过BCSP协议完成初的初始化配置,再激活标准HCI控制流程。对Linux来说,一旦bluez可以使用HCI与芯片建立起通信(一般是hciattach+ hciconfig),便可以利用其上的标准协议(SCO, L2CAP等),与蓝牙通信,使其正常工作了。
WLAN设备驱动(Wi-Fi)(比较复杂我面会专门写个wifi分析)
在linux中,Wlan设备属于网络设备,采用网络接口。
Wlan在用户空间采用标准的socket接口进行控制。
WiFi协议部分头文件:
include/net/wireless.h
WiFi协议部分源文件:
net/wireless/*
WiFi驱动程序部分:
drivers/net/wireless/*