barriers / 阅读 / 详情

如何愉快地调试一个 React Native for Android APP

2023-07-19 22:29:55
共2条回复
cloudcone
首先确保你的电脑和手机设备在同一个Wi-Fi环境下。
其次你需要开启USB调试才能在你的设备上安装你的APP。一定要确定你已经打开设备的USB调试开关!
确保你的设备已经被成功连接,可以输入adb devices核实:

在右边那列看到device说明你的设备已经被正确连接了。注意,你只应当连接仅仅一个设备。
因为如果你连接了多个设备(包含模拟器在内),你后续的一些操作可能会失败。拔掉不需要的设备,或者关掉模拟器,确保adb devices的输出只有一个是连接状态。
现在我们可以运行 react-native run-android 来在设备上安装并启动我们的应用了


句命令执行后,实际上就是在本地起一个node server,并且将你的android
project编译打包,再上传到你的手机上。然后当js文件有改动或debug模式下手动选择reload
js时候会自动更新bundle文件,达到改动js文件后即时显示的调试效果。
这“红屏”又是什么鬼?别着急,是正常的,我们需要连接上开发服务器,下面的步骤会解决这个问题。

摇晃手机,或者运行adb shell input keyevent 82,可以调出开发者菜单。

点击进入Dev Settings
点击Debug server host for device
输入你电脑的IP地址和端口号(譬如我的是192.168.3.15:8081)

注意:如果你的设备是android5.0以上版本(API 21+),就不用折腾这步了
而是:运行adb reverse tcp:8081 tcp:8081 (建立一个从设备向电脑转发的端口,前提是设备和电脑通过USB相连)
不需要更多配置,你就可以使用Reload JS和其它的开发选项了
Chrome开发者工具
在Chrome上调试js代码,需要在开发菜单中选择Debug JS,这会打开一个新的http://localhost:8081/debugger-uitab页。

Chrome中,按下u2318 + option + i或者选择视图(View) -> 开发者(Developer) ->
开发工具(Developer Tools)来打开开发工具控制台。打开有异常时暂停(Pause On Caught
Exceptions)选项,能够获得更好的开发体验。
Chrome中并不能直接看到App的用户界面,而只能提供console的输出,以及在sources项中断点调试js脚本。

要查看APP日志?
在终端下运行adb logcat *:S ReactNative:V ReactNativeJS:V可以看到你的应用的日志。

实时刷新
这个选项可以在你的js代码变更了之后,自动触发所连设备或者模拟器自动刷新。
开启方法:先打开开发菜单,选择Dev Settings,然后选择Auto reload on JS change选项。
到此才能完整的调试Android RN, 繁琐到累绝不爱。。
等等,能否想办法简化一下过程?

既然我们的RN项目里包含了完整的android工程,何不把android工程导入到android studio 去运行?不但可以同时查看js的日志和native的日志,而且开发android的同学最熟悉AS,利用AS的快捷键和各类插件提升调试效率。
have a try , 答案是肯定的!
执行react-native start 也可以起一个node server,只是它不帮你安装APP到device 。

以上就是我踩坑后整理的方法,按这套组合拳就可以愉快地调试了。水平有限,抛砖引玉,如果你有更好的方法!欢迎拍砖!
此处插播一个广告:拍砖请拍到我们的杏树林开放空间(246078103),期待感兴趣的同学加入。
之后要解决的一些issue
1,关于设备MinSdkVerison
RN 只支持Android4.1.2(API16)以上设备,4.0根据网络数据大概占比0.7比例,随着大部分app已经不支持4.0以下设备了,这块倒还可以接受 , 目前我们的病历夹是3.0(API-11) , 口袋是4.0(API-14)
2,我们的androidRN现在只能通过Debug JS才能渲染出界面,而不能正常的用Reload JS
3,在界面跳转时卡的令人发指
max笔记

对于这个融合了js & iOS & Android的新物种,尝试和它近距离接触的过程中,发现与单独调试js或者native比起来,调试RN的过程确实很繁琐,怎么个繁琐法?

假设已经配置好了Android开发环境,clone your project,并且已经npm install 了全部的依赖包,到这个姿势就可以开始调试了。

调试Android APP的设备有两种:

模拟器:Android SDK自带的 emulator 或者第三方的 Genymotion

真机

这里重点说说如何用真机调试,模拟器如果仅仅是跑个demo用用还行,

相关推荐

for Android是什么意思?

安卓系统使用:1、要知道qq for android的意思,意思是安卓版手机QQ,通俗点就是QQ在安卓系统上登录,手机目前用的最多的系统是安卓系统和ios系统(苹果)。2、安卓系统:Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。3、ios系统:一个为网际互连优化的操作系统--类似一个局域操作系统(NOS)、如Novell 的 NetWare,为LANs而进行优化。IOS为长时间有效地维护一个互联网络提供了统一的规则。简而言之,它是一个与硬件分离的软件体系结构,随网络技术的不断发展,可动态地升级以适应不断变化的技术(硬件和软件)。
2023-07-19 18:06:417

for android是什么意思

首先,要知道qq for android的意思,意思是安卓版手机QQ,通俗点就是QQ在安卓系统上登录,手机目前用的最多的系统是安卓系统和ios系统(苹果)。 安卓系统:Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。 ios系统:一个为网际互连优化的操作系统--类似一个局域操作系统(NOS)、如Novell的 NetWare,为LANs而进行优化。IOS为长时间有效地维护一个互联网络提供了统一的规则。简而言之,它是一个与硬件分离的软件体系结构,随网络技术的不断发展,可动态地升级以适应不断变化的技术(硬件和软件)。
2023-07-19 18:06:561

android中for是什么意思

for Android是指本软件适用于安卓智能手机。除了for Android外,还有For IOS(适用于苹果的Ios系统)和For WM(适用于微软的WindowsMobile)等。不同的系统的环境不一样,软件也就不同。
2023-07-19 18:07:051

手机QQ和QQ for Android是是什么意思

手机QQ:正在手机上登录QQ。  QQforAndroid:正在android手机上用的QQ。也是就是说,有正在使用qqforandroid标志的就是对方的QQ是使用安卓系统登陆的,有可能是安卓手机或者是安卓平板。  手机隐藏qqforandroid的方法:  1.打开手机QQ,在主页面用手指从左向右滑动,会出来一个菜单,点击“设置”。  2.在“设置界面”点击“权限与隐私”。  3.把“向好友展示网络状态选项”关闭。
2023-07-19 18:07:141

车充上面forandroid和forios是什么意思

for Android就是给安卓系统的手机的接口,另一个是苹果手机的充电接口。
2023-07-19 18:07:231

从qq for android下线是什么意思

不用改密码,QQ for android 是你的手机QQ,平时它时默认登陆(关机在一段时间内也算登陆状态)。当你登陆电脑的QQ时,就会提示你的QQ从QQ for android 下线,在设置里有个允许手机、电脑同时在线选项,这时电脑登陆后登陆手机QQ就会提示点开就可以避免你说的麻烦。不懂得可以再问,谢谢。
2023-07-19 18:07:301

我用电脑登着QQ,突然提示qq for android下线是什么意思

此情况一般是因为你同时登陆电脑pc版qq和手机版安卓qq。手机上的qq上线或下线会在你当前pc的qq上有所提示。  如果此qq号登陆了游戏的话,也会出现此类提示。因为游戏使用qq的账号信息等登陆,会检测账号和密码的正确和账号安全等情况。
2023-07-19 18:07:392

qtforandroid收费么

qtforandroid不收费。根据查询相关信息显示qtforandroid是用于在Android上进行开发的Qt,Qt是不需要支付任何费用的,意味着唯一现存的由Qt开发的用以提供移动电话应用的路线平台。
2023-07-19 18:07:481

QQ空间图片右下角那个“QQ空间for Android ”怎么弄的?????

在QQ空间手机客户端通用设置里面有个照片水印
2023-07-19 18:07:584

如何对Chrome for Android进行代理设置?

直接设置代理不行,可以设置系统全局代理,或者使用这个应用ProxyDroid - Android Apps on Google Play可以为指定应用设置代理。新版 chrome 为了节省用户流量,加入了压缩代理功能 所以要设置自己的代理的话,需要先去设置 - 带宽管理 - 减少数据流量消耗 - 关闭
2023-07-19 18:08:263

qq for android是什么意思?为什么我手机退出了QQ,但电脑上还显示手机QQ在线?

1、qqforandroid就是android手机上用的QQ。2、这是因为你退出了qq软件但是没有退出QQ登录。。把当前手机QQ注销登录就可以了》------希望可以帮到你,烦请采纳!------------
2023-07-19 18:09:061

qq提示从QQ for Android登陆是什么意思

就是告诉你你的QQ在安卓系统的手机上登陆过
2023-07-19 18:09:179

正在使用qq for android是什么意思

首先你要知道现在的QQ有好多版本的,其中包括Windows版本,Mac版本,iphone版本,android版本,你说的这个QQforandroid就是android版本的QQ。(android是安卓的意思。)
2023-07-19 18:09:411

用电脑挂着QQ 提示qq for android下线是什么意思

就是别人或者你自己的安卓系统的手机 上的QQ 下线了
2023-07-19 18:09:519

android中for如何使用?

EditText ip = (EditText) findViewById(R.id.ip_et);int number =Integer.valueOf(ip.getText().toString());for(int i=0;i<100;i++){if (i<number){Log.e("Jack","小与输入的数");}else{Log.e("Jack","大于等于输入的数");}}
2023-07-19 18:10:091

电脑上显示qq for android下线是什么情况?

安卓模拟器就不是安卓了?不知道你还有什么疑问。
2023-07-19 18:10:222

安卓APP的主要开发原理以及其主要过程是什么?

开发原理:Android应用程序是用Java语言编写的。编译过后的字节码,以及应用程序要求的其他数据和资源文件,通过aapt工具被绑定在一起,称为 Android包,这是一个带.apk后缀的档案文件。这个文件也是用户下载到他们设备上的文件。所有的代码在一个单一的.apk文件中,组成一个“应用程序”。主要过程:1、需求分析:大部分创业型项目在这个阶段只是一些比较抽象的想法。有一份相对完善的需求文档,不仅有助于创业者自身对项目的理解和周全性分析,如果项目是交由设计公司去完成的话,也更有利于对方准确把握项目的定位和商业模式,以便给出专业的建议和解决方案。2、原型设计接下来会根据上面提到的具体需求文档,项目经理进行会进行原型图的设计。3、UI设计原型图经过反复推敲修正后,UI 设计师会进行UI界面相关的配色设计、功能具象化处理、交互设计、以及各种机型、系统的适配。UI 设计师经过多次与项目经理沟通修改后,最终的到定稿的高保真设计图。4、开发经过以上几个过程之后,会正式进入到开发阶段。5、测试调试APP 功能开发完成之后,测试人员会对整项目进行系统性测试。这个环节会调动起项目组内所有人相关人员。而测试这个环节的重要性不亚于前期功能的规划,如果团队没有经过专业系统性训练的测试人员,很可能会导致项目出现与设计初衷存在落差,以及遗漏下一些逻辑上的坑。6、发布app经过至少两轮的内部测试以及小范围外测(或者完成满足测试要求的周期)后,会进行最终版本的上架。扩展资料APP开发工具1、MOTODEV Studio for AndroidMOTODEV Studio for Android,这是基于Android的开发环境,为开发者们提供新的MOTODEV App Accelerator Program使他们可以开发出更适合摩托罗拉Android手机的应用程序。2、J2ME开发插件 Mobile Tools for JavaMobile Tools for Java (MTJ) 是Nokia公司开发的一款 Eclipse插件,用于支持 Java 手机应用程序开发。其前身就是大名鼎鼎的 EclipseME。3、apk文件修改工具 Root ToolsRootTools是一个新的工具软件,Android开发者可以在这一工具软件的支持下,对.apk格式的文件进行再次修改,让程序表现更加出色,满足用户的需求。Root Tools里面自带有很多工具,比如BusyBox,它里面集成压缩了很多Linux的工具和命令,这样软件开发者在对....4、IDEA的Android开发插件 idea-androididea-android 是在 IDEA 集成开发环境中开发 Android 应用程序的插件。参考资料百度百科-app开发
2023-07-19 18:10:491

安卓app主要用什么编程语言的?

安卓Android系统版本,开发语言是Java;其他系统开发使用语言:1、苹果ios系统版本,开发语言是Objective-C;2、微软Windowsphone系统版本,开发语言是C#;3、塞班symbian系统版本,开发语言是C++。App开发,是指专注于手机应用软件开发与服务。App是application的缩写,通常专指手机上的应用软件,或称手机客户端。另外目前有很多在线app开发平台。当然移动互联网时代是全民的移动互联网时代,是每个人的时代,也是每个企业的时代。APP便捷了每个人的生活,APP开发让每个企业都开始了移动信息化进程。扩展资料:APP开发工具MOTODEVStudioforAndroidMOTODEVStudioforAndroid,这是基于Android的开发环境,为开发者们提供新的MOTODEVAppAcceleratorProgram使他们可以开发出更适合摩托罗拉Android手机的应用程序。J2ME开发插件MobileToolsforJavaMobileToolsforJava(MTJ)是Nokia公司开发的一款Eclipse插件,用于支持Java手机应用程序开发。其前身就是大名鼎鼎的EclipseME。NOKIA手机开发包gnokiignokii是一个NOKIA手机开发包,可支持大多数NOKIA手机的型号。功能无比强大可以修改LOGO,收发短信,拨打/接听电话,编辑铃声。甚至还可以取到对方手机的蜂窝号(CellID),从而起到定位的作用。apk文件修改工具RootToolsRootTools是一个新的工具软件,Android开发者可以在这一工具软件的支持下,对.apk格式的文件进行再次修改,让程序表现更加出色,满足用户的需求。RootTools里面自带有很多工具,比如BusyBox,它里面集成压缩了很多Linux的工具和命令,这样软件开发者在对....IDEA的Android开发插件idea-androididea-android是在IDEA集成开发环境中开发Android应用程序的插件。Android开发工具MOTODEVStudioMOTODEVStudio是摩托罗拉公司开发的Android应用开发工具。这是一个Eclipse的插件。该插件同时也提供了JavaME应用的开发和WebUI的开发功能。
2023-07-19 18:11:021

android手机什么软件可以打开doc文件

WPS(金山WPS for Android)软件金山WPS for Android是运行于Android 平台上的全功能办公软件。用户遍布全球220多个国家和地区。完全兼容桌面办公文档。支持DOC/DOCX/WPS/XLS/XLSX/PPT/PPTX/TXT/PDF等23种文件格式。支持查看、创建和编辑各种常用Office文档,方便用户在安卓或iOS平台手机和平板上使用。扩展资料:关于WPS(金山WPS for Android)软件功能1、WPS Office是一款办公软件套装,可以实现办公软件最常用的文字、表格、演示等多种功能。2、内存占用低,运行速度快,体积小巧。3、具有强大插件平台支持,免费提供海量在线存储空间及文档模板。3、支持阅读和输出PDF文件,全面兼容微软Office97-2010格式(doc/docx/xls/xlsx/ppt/pptx等)。关于WPS(金山WPS for Android)软件历史沿革1、在2013年5月17日发布了WPS2013版本,更快更稳定的V9引擎,启动速度提升25%。2、更方便更省心的全新交互设计,大大增强用户易用性。3、随意换肤的WPS,四套主题随心切换(不含25周年纪念版和扩展主题,扩展主题需另行下载,25周年纪念版已在2014年01月01日绝版),协同工作更简单,PC、Android设备无缝对接。参考资料来源:百度百科——WPS
2023-07-19 18:11:211

如何安装eclipse for android

使用Eclipse开发Android时需要安装ADT插件和配置SDK环境。1.下载安装ADT插件打开Eclipse,选择Help、Install New Software、Add,在显示的界面中输入插件的名称ADT,以及其下载路径,即可实现在线下载和安装。2.配置SDK环境下载好SDK。打开Eclipse,选择Window、Preferences、Android,在右边显示的界面中选择Browse,定位到SDK下载好的路径中。3.综上所述:Eclipse开发android环境已经完成Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。
2023-07-19 18:11:342

Win10安卓模拟器怎么用

方法/步骤首先,开启 Hyper-V 虚拟化技术(已经开启的无视);① 选中 控制面板->卸载程序->启动或关闭Windows功能->Hyper-V->确定下载完后是一个40M左右的 vs_emulatorsetup.exe 文件,不包含安卓模拟器的镜像文件,安装的时候会默认在线下载API 19(Andorid 4.4)的x86镜像,后续也可以单独再下载其他的API xx版本,另外说明一下, Visual Studio Emulator for Android是不依赖Visual Studio的,也就是说可以单独安装使用,Android Studio是使用adb作为桥梁来连接 Visual Studio Emulator for Android 。安装步骤我就不列出来了, 记得安装后重启(它需要把自己加入Hyper-V Administrators的管理员组里面) 。安装重启后打开 Visual Studio Emulator for Android ,如果启动了模拟器,则会在Hyper-V里面自动创建出对应的x86的Android虚拟机来,2.设置Andorid Studio使其可以使用这些模拟器打开Android Studio> Run > Edit Configurations > Defaults / Android Application /General 选项卡的 Target Device 节点,勾选 Show chooser dialog 和 Use same device for future launches 。 记得不要忘记点Apply和OK。 3. 为Android Studio添加启动模拟器的快捷按钮虽然在Visual Studio Emulator for Android的管理器窗口中可以启动模拟器,但是每次都要到这里面去打开还是比较繁琐的,故而为Android Studio添加一个启动Visual Studio Emulator for Android的快捷按钮。3.1 配置External Tools打开 File > Settings > External Tools > Add :Name:随便写,方便认出来就好,这里是 VS Emulator (4.4 API 19) 。Program:填写Visual Studio Emulator for Android安装目录下的emulatoecmd.exe的绝对路径,就是用它来启动模拟器的。这里是 C:Program Files (x86)Microsoft Emulator Manager1.0emulatorcmd.exe 。Parameters:添加启动模拟器的参数,/sku:Android是说明打开Android的模拟器,/id:后面的Guid是模拟器的唯一 编号, 总的意思是指定要启动哪一个Android模拟器。 id可以通过 emulatorcmd.exe /sku:Android list /type:device 获得,Working Directory:指定工作目录,应该是可以随便填写的。这里是$ProjectFileDir$。 3.2 添加按钮到Toolbar在toolbar空白处点击右键,选择 Customize Menus and Toolbars 。然后导航到Main Toolbar > Add After >在弹出的面板中找到 External tool > VS Emulator (4.4 API 19) 然后按 OK 。 然后点击新添加的按钮了,就可以启动Android模拟器了:4. 为Android Studio添加Contect模拟器的快捷按钮第三节的按钮只是启动了模拟器,但是Andorid Studio还无法连接到模拟器,这里就要使用adb命令来连接到刚才启动的模拟器上 。4.1配置External Tools同样是添加一个快捷按钮,步骤和第三部一样,只是参数不同,这里就只把参数列出来了:Name:随便写,方便认出来就好,这里是 adb Connect (VS Emulator) 。Program:填写adb.exe的绝对路径,这里是 D:\_androidsdkplatform-toolsadb.exe 。Parameters:添加adb.exe的参数,connect ip:5555;这里是 192.168.2.233:5555。ip可以通过打开模拟器在wifi中查看,也可以在模拟器的设置中network中查看 Working Directory:指定工作目录,应该是可以随便填写的。这里是$ProjectFileDir$ 。
2023-07-19 18:12:361

移动gis平台ucmap for android有哪些功能?哪位大神详细列举一下?

UCMap for Android是当前主流的移动GIS开发组件,拥有业界最快的地图显示性能,依托庞大的接口体系为开发者提供强大且丰富的定制功能,UCMap for Android从2009年第一版推出至今,经历了多次的版本升级,其稳定性得到众多实际项目的检验,在GIS各行业得到广泛应用,例如,土地确权、国土监察、电力踏勘、林业调查、林业消防、管线巡检、部件采集、城市管理、房产测绘、农业测图配方、单兵通、航迹管理、室内导航、智慧景区、公安应急等1、数据格式 UCMap for Android支持通用的矢量地图格式SHP,支持各种遥感影像格式Geotiff、Img、BMP、JPG、PNG等,同时还支持离线的Google地图和影像,或者自定义瓦片图;2、数据加密地图数据是重要的保密信息,为了在数据丢失或未授权的情况下,外界无法解读出数据本身的内容,这就要求数据以密文的形式存在;为此,UCMap for Android支持地图数据的加密,经过加密的地图是以密文的形式存在,只有输入正确的口令才能解密;3、数据更新地图数据是有现势性的,即经过一段时间,由于地理自然环境的变化,地图数据也应及时更新,这样才能让地图数据更加准确地反映现实情况,所以,地图数据的更新就显得尤为重要;UCMap for Android不但支持离线地图,同时也支持地图在线更新,即可以在线更新替换整个地图数据,也可以更新替换地图中的某些图层;4、符号化地图是将地理数据通过符号化的方式予以展现的,UCMap for Android除了支持常规预定义的点、线、面符号外,还支持自定义的SVG矢量符号,用户可以自定义各种矢量符号来渲染地图,实现地图强大的直观表现力;5、地图显示地图是由各个专题的图层叠加而成,图层的性质有两种,即矢量图层和影像图层,在坐标一致的前提下,可以将影像图层作为背景图,将矢量图层叠加在影像图层之上;UCMap for Android拥有业界最高的地图浏览性能,支持矢量图和影像图叠加显示,支持地图的缩小、放大、平移、双指旋转,支持滑动的动画效果,支持地图比例尺&指北针等小部件;6、地图与图层管理装载地图、设置获取地图范围、设置获取地图比例尺、设置获取地图单位、获取地图图层,添加图层、删除图层、调整图层顺序、修改图层标注字段、修改图层样式、查询图层等;7、地图查询地图查询分属性查询和空间查询,属性查询是以地图要素的某些属性值为条件进行SQL查询,查询返回要素的属性或几何信息;空间查询是以地图要素之间的空间拓扑关系为条件进行扩展型的SQL查询;UCMap for Android支持各种类型的SQL查询,尤其是空间查询,能覆盖要素之间各种空间拓扑关系,如Disjoint、Touches、Crosses、Within、Overlaps、Contains、Intersects、Equals、DWithin等空间谓词;8、要素编辑一个要素对应数据库表中的一条记录,记录里有属性字段和几何字段,所谓编辑就是对这些属性字段和几何字段进行增加、删除、修改等动作,于是,添加要素、删除要素、更新要素、导出shp是UCMap for Android最基础的功能;为了适应移动端手指或触笔来编辑几何图形,UCMap for Android设计了人性化的编辑交互模式,如点选或框选要素、捕捉节点、移动节点、添加节点、删除节点、移动要素、编辑动作的RedoUndo(可以无数次)、信息查询info等;UCMap for Android还提供了更高级的编辑,如线或图斑的裁剪、合并等拓扑编辑;针对测量成图的需求,还提供了根据测图过程中测得的长度和角度自动绘制图形的功能;9、专题图渲染UCMap for Android支持多种专题图渲染,根据所给定的属性条件,可定制各种专题渲染,甚至可以隐藏图层中的要素;10、坐标系转换UCMap for Android支持2个任意投影类型之间的坐标转换,支持四参数、七参数坐标转换;11、地图量算UCMap for Android支持地图测距、测面积、测角度;12、定位监控和轨迹显示UCMap for Android能实时对若干监控点进行实时显示并快速刷新,能查询并绘制某个监控点的历史轨迹;13、地图标注UCMap for Android提供了一个特殊的图层,即装饰图层,用户可以在这个图层上对地图进行标绘,下面要重点介绍的地图标绘就绘制在这个图层上,除了能标绘军标以外,还能绘制矩形、直线、圆、椭圆、路径、文字等;14、等值线绘制UCMap for Android支持对离散高程点(或气象点)进行插值,并生成高程等值线或气象等值线图;15、路径规划与导航UCMap for Android支持特定场所的简单道路的路径规划,例如,室内地图、景区地图、港口码头等特定场所的路径规划;16、地图标绘针对军事作战、应急等行业,协同标绘是其基本需求,UCMap for Android是支持矢量标绘,能对标绘的符号进行组合、拆分、移动、缩放、拉伸、旋转等等操作;标绘是在装饰图层上进行的,一个标绘就是一个装饰对象,装饰对象可以是任意的SVG符号,也可以是预定义的图形;对于测绘行业,地图标绘也为测绘草图的绘制提供了完美的解决方案;17、集成功能UCMapfor Android还可以将手机拍照、录音、录像、GPS定位等功能集成在一起,在地图上记录这些多媒体信息采集的时空信息; UCMapfor Android为开发人员提供了强大的GIS基础平台,用户根据自身项目的需求、通过二次开发来实现所需要的应用产品;UCMap接口庞大、结合本人近几年移动GIS开发经验,以上只是UCMap基础功能的节略,更深入细致的使用还需要开发者阅读UCMap的开发教程和API文档!
2023-07-19 18:13:551

如何安装arcgis for android

  ArcGIS for Android开发环境配置相对而言比较复杂,但是对于熟悉java开发,或者有ArcGIS for java开发经验的朋友来说还是比较简单的,主要包括如下几个方面:  前题:  Eclipse IDE 要求  1、 The Android Development Tools (ADT) Plug-In for Eclipse 插件  2、 The ArcGIS API for Android Eclipse Plug-In for Eclipse 插件(该插件目前只支持  Eclipse3.5(Galileo)和Eclipse3.6(Helios))  3、ADT 安装之前需要安装Eclipse Javadevelopment tools(JDT)插件  4、Java development kit (JDK) 6  支持的Android SDK 平台  SDK Platform Android 2.1,API 7以上  支持的Server 版本和平台  ArcGIS API for Android 支持ArcGIS Server 9.3.1 和10.0 的服务  一、安装JDK、Tomcat(如果不用Tomcat作为服务器,则可不需要装)  注:这里介绍的是绿色版的JDK,Tomcat安装方法,如果下载的是安装包则可以直接安装,不需要进行复杂的配置,所以对于不熟悉java编程环境配置的朋友来说,可以使用这种方法安装  1.把jdk放在C:Program Files目录下:  1)在环境变量Path前面添加  C:Program Filesjdk1.6.0_10in;  2)添加环境变量JAVA_HOME  值为 C:Program Filesjdk1.6.0_10  2.把tomcat安装在C:Program Files目录下:  1)添加环境变量classpath  值为.;C:Program Filesjdk1.6.0_10jrelib;C:Program Filesjdk1.6.0_10lib ools.jar; C:Program Filesjdk1.6.0_10libdt.jar;C:Program FilesApache Software FoundationTomcat 6.0inootstrap.jar  2)添加环境变量TOMCAT_HOME  值C:Program FilesApache Software FoundationTomcat 6.0  3)添加环境变量CATALINA_HOME  值C:Program FilesApache Software FoundationTomcat 6.0  4)添加环境变量CATALINA_BASE  值C:Program FilesApache Software FoundationTomcat 6.0  验证Tomcat是否安装成功:  1)启动Tomcat;  2)在Ie浏览器中敲入http,//localhost,8080/,出来Tomcat首页,说明Tomcat安装成功;  二、下载Eclipse  如果你还没有Eclipse的话,可以去:http,//www,eclipse,org/downloads/下载Eclipse IDE for Java Developers(92M)的win 32bit版或者其他版本:  解压之后即可使用。  三、安装AndroidSDK  首先到Android Developers官网下载AndroidSDK解压到任何文件夹下,  运行SDK Setup.exe,点击Available Packages。如果没有出现可安装的包,请点击Settings,选中Misc中的"Force https,//..."这项,再点击Available Packages 。  选择希望安装的SDK及其文档或者其它包,点击Installation Selected、Accept All、Install Accepted,开始下载安装所选包 (注:这里下载包需要很长时间,您可以直接拷贝被人下载好的AndroidSDK的文件,同样只要设置好环境变量就可以用了)  在环境变量中新建PATH值为:Android SDK中的tools和platform-tools的绝对路径(本机为D:AndroidDevelopandroid-sdk-windows ools;D:AndroidDevelopandroid-sdk-windowsplatform-tools)。  “确定”后,重新启动计算机。重启计算机以后,进入cmd命令窗口,检查SDK是不是安装成功。  运行 android –h 如果有类似以下的输出,表明安装成功:  四、ADT安装  打开 Eclipse IDE,进入菜单中的 "Help" -> "Install New Software"  点击Add...按钮,弹出对话框要求输入Name和Location:Name自己随便取,Location输入http://dl-ssl.google.com/android/eclipse。如下图所示:  确定返回后,在work with后的下拉列表中选择我们刚才添加的ADT,我们会看到下面出有Developer Tools,展开它会有Android DDMS和Android Development Tool,勾选他们。 如下图所示:  然后就是按提示一步一步next。  完成之后:  选择Window > Preferences...  在左边的面板选择Android,然后在右侧点击Browse...并选中SDK路径,本机为:  D:AndroidDevelopandroid-sdk-windows  点击Apply、OK  五、配置虚拟设备  下载完成对应Android 平台,然后创建一个新的虚拟设备。如下图  此时,Eclipse下Android 开发插件已经配置完成,我们可以开始配置ArcGIS API For  Android 开发插件。  六、安装ArcGIS插件  现在Android 的开发环境已经具备,后面就需要安装ArcGIS开发相关的库和Eclipse插件了。在此之前,请确认您已经下载了Android 2.1 或2.1 的平台,因为这是ArcGIS Android API的系统需求1。  Esri 提供了一个在线升级地址(http,//downloads,esri,com/software/arcgis/android)来帮助用户安装ArcGIS 的开发插件,在Eclipse 中,还是通过【Help】->【Install New Software…】菜单就可以顺利地安装上这些组件:  当 ArcGIS开发插件安装完成后,在新建工程的选项中就可以看到【ArcGIS Project for Android】和【ArcGIS Samples for Android】的菜单,ArcGIS Android API的开发环境就顺利配置完成了。
2023-07-19 18:14:021

华为手表能用WPS吗

手机上的WPS Office,是一款手机应用程序,功能是可以进行操作一些基本的办公。包扣word、excel、ppt等常用应用程序。WPS Office 是由金山软件股份有限公司自主研发的一款办公软件套装,可以实现办公软件最常用的文字、表格、演示等多种功能。具有内存占用低、运行速度快、体积小巧、强大插件平台支持、免费提供海量在线存储空间及文档模板、支持阅读和输出PDF文件、全面兼容微软Office97-2010格式(doc/docx/xls/xlsx/ppt/pptx等)独特优势。覆盖Windows、Linux、Android、iOS等多个平台。
2023-07-19 18:14:244

获取outlookforandroid如何去掉

获取outlookforandroid去掉方法为:1、启动Outlook,在『Launchpadime』中,找到『MicrosoftOutlook』图标;单击此图标,启动outlook应用程序。2、进入『账户』设置:在『工具』菜单中,单击『账户』;3、选择删除账户:在弹出的『账户』窗口中,选中需要删除的账户。然后,单击左下角的『-』按钮;4、确定删除操作:在弹出『是否确实要删除此账户』的询问窗口中,单击『删除』按钮;5、完成删除操作:操作完成后,返回『账户』窗口,可以看到需要去掉outlookforandroid的账户已经不存在。
2023-07-19 18:14:451

蓝牙键盘上面(forAndroid,win,ios)是拿来什么用的。

这个按道理来说,应该是和平板电脑链接用的,手机连接用的因为平板电脑,手机带蓝牙,但是操作系统有安卓,微软和苹果系统,但是他们的驱动程序不一样的
2023-07-19 18:14:541

求助,qt for android无法调试

s为 ABI "arm-linux-android-elf-32bit"启动调试器"QmlCppEngine"...dStart parameters: "com.ds.elofm" mode: 6dABI: arm-linux-android-elf-32bitdLanguages: c++ qmldExecutable: D:QtWorkSpaceuild-eloFM-Android_for_armeabi_v7a_GCC_4_9_Qt_5_4_1-Debugapp_process dDebugger: D:Androidandroid-ndk-r10d oolchainsarm-linux-androideabi-4.9prebuiltwindowsinarm-linux-androideabi-gdb.exedProject: D:QtWorkSpaceeloFM (built: D:QtWorkSpaceuild-eloFM-Android_for_armeabi_v7a_GCC_4_9_Qt_5_4_1-Debug)dQML server: 127.0.0.1:3768dRemote: :5039dSysroot: dDebug Source Location: dDebugger settings: ```````中间略...`````````s正在设置 inferior...<204-interpreter-exec console "set auto-solib-add on"<205-interpreter-exec console "python sys.path.insert(1, "C:/Qt/Qt5.4.1/Tools/QtCreator/share/qtcreator/debugger/")"<206-interpreter-exec console "python sys.path.append("D:/Android/android-ndk-r10d/toolchains/arm-linux-androideabi-4.9/prebuilt/windows/bin/data-directory/python")"<207-interpreter-exec console "python from gdbbridge import *" W/ActivityThread( 7621): Application com.ds.elofm can be debugged on port 8100... W/System.err( 7621): java.lang.ClassNotFoundException: android.graphics.drawable.RippleDrawable W/System.err( 7621): at java.lang.Class.classForName(Native Method) W/System.err( 7621): at java.lang.Class.forName(Class.java:251) W/System.err( 7621): at java.lang.Class.forName(Class.java:216)```````中间略...````````` W/System.err( 7621): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:818) W/System.err( 7621): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:634) W/System.err( 7621): at dalvik.system.NativeStart.main(Native Method) W/System.err( 7621): Caused by: java.lang.NoClassDefFoundError: android/graphics/drawable/RippleDrawable W/System.err( 7621): ... 25 more W/System.err( 7621): Caused by: java.lang.ClassNotFoundException: Didn"t find class "android.graphics.drawable.RippleDrawable" on path: DexPathList[[zip file "/data/app/com.ds.elofm-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.ds.elofm-2, /vendor/lib, /system/lib]] W/System.err( 7621): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) W/System.err( 7621): at java.lang.ClassLoader.loadClass(ClassLoader.java:497) W/System.err( 7621): at java.lang.ClassLoader.loadClass(ClassLoader.java:457) W/System.err( 7621): ... 25 more W/System.err( 7621): java.lang.ClassNotFoundException: android.graphics.drawable.AnimatedStateListDrawable W/System.err( 7621): at java.lang.Class.classForName(Native Method) W/System.err( 7621): at java.lang.Class.forName(Class.java:251) W/System.err( 7621): at java.lang.Class.forName(Class.java:216)```````中间略...````````` W/System.err( 7621): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:634) W/System.err( 7621): at dalvik.system.NativeStart.main(Native Method) W/System.err( 7621): Caused by: java.lang.NoClassDefFoundError: android/graphics/drawable/AnimatedStateListDrawable W/System.err( 7621): ... 25 more W/System.err( 7621): Caused by: java.lang.ClassNotFoundException: Didn"t find class "android.graphics.drawable.AnimatedStateListDrawable" on path: DexPathList[[zip file "/data/app/com.ds.elofm-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.ds.elofm-2, /vendor/lib, /system/lib]] W/System.err( 7621): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) W/System.err( 7621): at java.lang.ClassLoader.loadClass(ClassLoader.java:497) W/System.err( 7621): ... 25 more W/System.err( 7621): java.lang.ClassNotFoundException: android.graphics.drawable.VectorDrawable W/System.err( 7621): at java.lang.Class.classForName(Native Method) W/System.err( 7621): at java.lang.Class.forName(Class.java:251) W/System.err( 7621): at java.lang.Class.forName(Class.java:216)```````中间略...````````` W/System.err( 7621): at dalvik.system.NativeStart.main(Native Method) W/System.err( 7621): Caused by: java.lang.NoClassDefFoundError: android/graphics/drawable/VectorDrawable W/System.err( 7621): ... 25 more W/System.err( 7621): Caused by: java.lang.ClassNotFoundException: Didn"t find class "android.graphics.drawable.VectorDrawable" on path: DexPathList[[zip file "/data/app/com.ds.elofm-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.ds.elofm-2, /vendor/lib, /system/lib]] W/System.err( 7621): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) W/System.err( 7621): at java.lang.ClassLoader.loadClass(ClassLoader.java:497) W/System.err( 7621): at java.lang.ClassLoader.loadClass(ClassLoader.java:457) W/System.err( 7621): ... 25 more W/ResourceType( 7621): Skipping entry 0x1080524 in package table 0 because it is not complex!>=thread-group-added,id="i1">~"GNU gdb (GDB) 7.6 ">~"This GDB was configured as "--host=i586-pc-mingw32msvc --target=arm-linux-android". For bug reporting instructions, please see: ">~"<http://source.android.com/source/report-bugs.html>. ">&"show version ">~"GNU gdb (GDB) 7.6 ">~"Copyright (C) 2013 Free Software Foundation, Inc. ">~"This GDB was configured as "--host=i586-pc-mingw32msvc --target=arm-linux-android". For bug reporting instructions, please see: ">~"<http://source.android.com/source/report-bugs.html>. ">195^donedPARSING VERSION: 195^done>&"show debug-file-directory ">~"The directory where separate debug symbols are searched for is "c:\tmp\ndk-andrewhsieh\build\toolchain\prefix\lib\debug". ">196^done```````中间略...`````````>211^done<212target extended-remote tcp::5039>&"target extended-remote tcp::5039 ">~"Remote debugging using tcp::5039 ">~"Ignoring packet error, continuing... ">&"warning: unrecognized item "timeout" in "qSupported" response " unrecognized item "timeout" in "qSupported" response>~"Ignoring packet error, continuing... " W/System.err( 7621): java.lang.Exception: W/System.err( 7621): at org.qtproject.qt5.android.bindings.QtActivity.loadApplication(QtActivity.java:261) W/System.err( 7621): at org.qtproject.qt5.android.bindings.QtActivity.startApp(QtActivity.java:660) W/System.err( 7621): at org.qtproject.qt5.android.bindings.QtActivity.onCreate(QtActivity.java:900) W/System.err( 7621): at android.app.Activity.performCreate(Activity.java:5303) W/System.err( 7621): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1091) W/System.err( 7621): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2165) W/System.err( 7621): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2255) W/System.err( 7621): at android.app.ActivityThread.access$800(ActivityThread.java:142) W/System.err( 7621): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1213) W/System.err( 7621): at android.os.Handler.dispatchMessage(Handler.java:102) W/System.err( 7621): at android.os.Looper.loop(Looper.java:136) W/System.err( 7621): at android.app.ActivityThread.main(ActivityThread.java:5217) W/System.err( 7621): at java.lang.reflect.Method.invokeNative(Native Method) W/System.err( 7621): at java.lang.reflect.Method.invoke(Method.java:515) W/System.err( 7621): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:818) W/System.err( 7621): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:634) W/System.err( 7621): at dalvik.system.NativeStart.main(Native Method)>~"Ignoring packet error, continuing... ">~"Ignoring packet error, continuing... ">&"Remote connection closed "dNOTE: INFERIOR EXITEDdState changed from InferiorSetupRequested(4) to InferiorExitOk(16)dQUIT DEBUGGER REQUESTED IN STATE 6dNOTE: INFERIOR ILLdState changed from InferiorSetupOk(6) to InferiorShutdownRequested(17)dQUEUE: SHUTDOWN INFERIORdState changed from InferiorExitOk(16) to InferiorShutdownOk(19)dNOTE: INFERIOR EXITEDdState changed from InferiorSetupRequested(4) to InferiorExitOk(16) [master]dState changed from InferiorExitOk(16) to InferiorShutdownOk(19) [master]dState changed from InferiorShutdownOk(19) to EngineShutdownRequested(20) [master]dQUEUE: SHUTDOWN ENGINE>212^error,msg="Remote connection closed"sFailed to start application: 连接远程服务器失败:sRemote connection closeddINFERIOR START FAILEDdNOTE: INFERIOR SETUP FAILEDs设置失败。dState changed from InferiorShutdownOk(19) to InferiorSetupFailed(5)dQUIT DEBUGGER REQUESTED IN STATE 17dNOTE: INFERIOR ILLdState changed from InferiorShutdownRequested(17) to InferiorShutdownRequested(17)dQUEUE: SHUTDOWN INFERIORdNOTE: INFERIOR SETUP FAILEDs设置失败。dState changed from EngineShutdownRequested(20) to InferiorSetupFailed(5) [master]dState changed from InferiorSetupFailed(5) to EngineShutdownRequested(20) [master]dQUEUE: SHUTDOWN ENGINEdCALL: SHUTDOWN INFERIORdINFERIOR SUCCESSFULLY SHUT DOWNdState changed from InferiorShutdownRequested(17) to InferiorShutdownOk(19)dCALL: SHUTDOWN ENGINEdState changed from InferiorSetupFailed(5) to EngineShutdownRequested(20)dINITIATE GDBENGINE SHUTDOWN IN STATE 0, PROC: 2<213-gdb-exitdCALL: SHUTDOWN INFERIORdINFERIOR SUCCESSFULLY SHUT DOWNdState changed from InferiorShutdownOk(19) to InferiorShutdownOk(19)dCALL: SHUTDOWN ENGINEdState changed from EngineShutdownRequested(20) to EngineShutdownRequested(20)dINITIATE GDBENGINE SHUTDOWN IN STATE 0, PROC: 2<214-gdb-exit>213^exitdGDB CLAIMS EXIT; WAITINGdUNEXPECTED GDB STDERR: Could not AssignProcessToObjectdGDB PROCESS FINISHED, status 0, code 0dNOTE: ENGINE SHUTDOWN OKdState changed from EngineShutdownRequested(20) to EngineShutdownOk(22)dNOTE: ENGINE SHUTDOWN OKdState changed from EngineShutdownRequested(20) to EngineShutdownOk(22) [master]dState changed from EngineShutdownOk(22) to DebuggerFinished(23) [master]dQUEUE: FINISH DEBUGGERdState changed from EngineShutdownOk(22) to DebuggerFinished(23)dNOTE: FINISH DEBUGGERdHANDLE RUNCONTROL FINISHEDs调试器已结束。
2023-07-19 18:15:011

最近要配置安卓环境,遇到一个问题:openCV for android 这块出问题了

整个项目的结构图:编写DetectFaceDemo.java,代码如下:[java] view plaincopyprint?package com.njupt.zhb.test; import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.core.MatOfRect; import org.opencv.core.Point; import org.opencv.core.Rect; import org.opencv.core.Scalar; import org.opencv.highgui.Highgui; import org.opencv.objdetect.CascadeClassifier; // // Detects faces in an image, draws boxes around them, and writes the results // to "faceDetection.png". // public class DetectFaceDemo { public void run() { System.out.println(" Running DetectFaceDemo"); System.out.println(getClass().getResource("lbpcascade_frontalface.xml").getPath()); // Create a face detector from the cascade file in the resources // directory. //CascadeClassifier faceDetector = new CascadeClassifier(getClass().getResource("lbpcascade_frontalface.xml").getPath()); //Mat image = Highgui.imread(getClass().getResource("lena.png").getPath()); //注意:源程序的路径会多打印一个‘/",因此总是出现如下错误 /* * Detected 0 faces Writing faceDetection.png libpng warning: Image * width is zero in IHDR libpng warning: Image height is zero in IHDR * libpng error: Invalid IHDR data */ //因此,我们将第一个字符去掉 String xmlfilePath=getClass().getResource("lbpcascade_frontalface.xml").getPath().substring(1); CascadeClassifier faceDetector = new CascadeClassifier(xmlfilePath); Mat image = Highgui.imread(getClass().getResource("we.jpg").getPath().substring(1)); // Detect faces in the image. // MatOfRect is a special container class for Rect. MatOfRect faceDetections = new MatOfRect(); faceDetector.detectMultiScale(image, faceDetections); System.out.println(String.format("Detected %s faces", faceDetections.toArray().length)); // Draw a bounding box around each face. for (Rect rect : faceDetections.toArray()) { Core.rectangle(image, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 255, 0)); } // Save the visualized detection. String filename = "faceDetection.png"; System.out.println(String.format("Writing %s", filename)); Highgui.imwrite(filename, image); } } package com.njupt.zhb.test;import org.opencv.core.Core;import org.opencv.core.Mat;import org.opencv.core.MatOfRect;import org.opencv.core.Point;import org.opencv.core.Rect;import org.opencv.core.Scalar;import org.opencv.highgui.Highgui;import org.opencv.objdetect.CascadeClassifier;//// Detects faces in an image, draws boxes around them, and writes the results// to "faceDetection.png".//public class DetectFaceDemo { public void run() { System.out.println(" Running DetectFaceDemo"); System.out.println(getClass().getResource("lbpcascade_frontalface.xml").getPath()); // Create a face detector from the cascade file in the resources // directory. //CascadeClassifier faceDetector = new CascadeClassifier(getClass().getResource("lbpcascade_frontalface.xml").getPath()); //Mat image = Highgui.imread(getClass().getResource("lena.png").getPath()); //注意:源程序的路径会多打印一个‘/",因此总是出现如下错误/** Detected 0 faces Writing faceDetection.png libpng warning: Image* width is zero in IHDR libpng warning: Image height is zero in IHDR* libpng error: Invalid IHDR data*/ //因此,我们将第一个字符去掉 String xmlfilePath=getClass().getResource("lbpcascade_frontalface.xml").getPath().substring(1); CascadeClassifier faceDetector = new CascadeClassifier(xmlfilePath); Mat image = Highgui.imread(getClass().getResource("we.jpg").getPath().substring(1)); // Detect faces in the image. // MatOfRect is a special container class for Rect. MatOfRect faceDetections = new MatOfRect(); faceDetector.detectMultiScale(image, faceDetections); System.out.println(String.format("Detected %s faces", faceDetections.toArray().length)); // Draw a bounding box around each face. for (Rect rect : faceDetections.toArray()) { Core.rectangle(image, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 255, 0)); } // Save the visualized detection. String filename = "faceDetection.png"; System.out.println(String.format("Writing %s", filename)); Highgui.imwrite(filename, image); }}3.编写测试类:[java] view plaincopyprint?package com.njupt.zhb.test; public class TestMain { public static void main(String[] args) { System.out.println("Hello, OpenCV"); // Load the native library. System.loadLibrary("opencv_java246"); new DetectFaceDemo().run(); } } //运行结果: //Hello, OpenCV // //Running DetectFaceDemo ///E:/eclipse_Jee/workspace/JavaOpenCV246/bin/com/njupt/zhb/test/lbpcascade_frontalface.xml //Detected 8 faces //Writing faceDetection.png package com.njupt.zhb.test;public class TestMain { public static void main(String[] args) { System.out.println("Hello, OpenCV"); // Load the native library. System.loadLibrary("opencv_java246"); new DetectFaceDemo().run(); }}//运行结果://Hello, OpenCV////Running DetectFaceDemo///E:/eclipse_Jee/workspace/JavaOpenCV246/bin/com/njupt/zhb/test/lbpcascade_frontalface.xml//Detected 8 faces//Writing faceDetection.png
2023-07-19 18:15:081

busyboxforandroidndk模块干什么的

busyboxforandroidndk模块是是非常好用的magisk模块可以对很多指令进行编译处理,让你的手机可以进行更多的指令执行,使用其他的软件和程序也会更加的流畅。它是一个集成了常用的命令和工具的软件。而通过n k进行编译生产大大缩小了它的体积是一个优化型的模块。
2023-07-19 18:15:151

OpenGl ES 2.0 Learn For Android(五)碰撞检测

在现实生活里,碰撞是怎样发生的呢?是两个实体的边缘相接触。在OpenGL的视图世界里,肯定也是这个样子。但是我们不可能把一个物体的所有点都描述出来,然后在另一个集合里看是否有点的存在。 那么最简单的方式,就是将一个实体看做一个球,它的假设它的外边缘都在半径里。那么这个问题就简化成了,这个半径范围内,是否会有其他物体存在。 那我们在OpenGL世界坐标系里放置半径R1一个物体。如果是世界坐标系里放半径R2另一物体,那么,只要两个物体的中心位置距离dis小于两个物体半径和(R1+R2),就可以认为它们相交。这个是很容易理解的。 《OpenGL ES应用开发实践指南:Android卷》则用手指触点检测相交。其实这个问题并没有发生变化。我们还是在世界坐标系里看相交就好了。投射到屏幕的一个点,同样可以转换为世界坐标系里的两个点。这里涉及一些奇怪的技巧。比如,将一个不知道Z轴位置的点设置为-1/1。 这边我会做一个更简易的版本。我在世界坐标系里放置一个边长为1的正方体。如下图所示。 在之前讲到三角形的画法的时候,有讲到三角带。这是openGL为了节省节点,设计的绘制方案。这里的话,顶点也按对应的方式进行排布。 为了方便,我并没有绘制它的上下两个面。 将上一篇的顶点下面方式赋值。颜色也对应改改。 在上一篇的时候,我只用了modelMatrix和projectionMatrix。因为上一篇使用的默认视角,也就是从Z轴往它的负方向看去。 其实这一篇方向还是不会发生变化,但是这里需要用到视角的概念,也就是 setLookAtM() 这个方法。 所以引入这三个矩阵 viewMatrix 用来保存相机矩阵。 viewProjectionMatrix 用来保存透视投影和相机矩阵的乘积。 invertedViewProjectionMatrix 用来保存 viewProjectionMatrix 的逆矩阵。 因为要拿到触碰事件,给GlSurfaceView.setOnTouchListener 有意思的来了。我们知道,Android View的坐标系是左上角为原点,往右是x正方向,往下是y正方向。但是OpenGL ES归一化坐标里,坐标原点在屏幕正中央,往右是x正方向,往上是y正方向。 以X轴为例,要做是的从[0,1]映射到[-1,1]。那么x*2-1就可以达到想要的效果。这个如果后面有时间介绍构型函数,会见得很多。 我们拿到了触点的归一化坐标,我们要转换成世界坐标,这样才能做距离计算。 计算距离的工具类直接从示例中拿出来 这里光使用计算距离的方法,可以看书的9.2章。我觉得我肯定是没作者讲得好了。 使用上一篇用的投影参数,矩阵显得有些大了,所以在使用前,先把他们都缩小到1/5大小。 这里的话我要偷些懒,把 handleTouchPress 直接用上工具类里的方法。 在将点击的坐标转换为世界坐标里线段的方法里,有用到 invertedViewProjectionMatrix 它是 viewProjectionMatrix 的逆矩阵 那我做的判断是,如果点击了正方体,则停止旋转。效果如下 demo地址: https://github.com/YueZhiFengMing/LearnOpenGl/tree/master/Fourth3D
2023-07-19 18:15:231

怎样安装eclipse开发android

11)首先,下载android SDK.介绍一种非常简单的方法,一并下载eclipse.在百度中输入android SDK,进入搜索界面。选中第一条。2)如果你已经有eclipse,你可以直接在eclipse中进行android SDK插件的安装。方法就是点击上面菜单里的help,选择install new software进行添加SDK。具体方法见经验如何在eclipse中添加android SDk。2进入下载界面后,选择适合自己电脑的SDK进行下载。这里下载的是android开发工具,非常的简单实用,不需要我么重新下载eclipse,在这个下载包中会自带一个eclipse FOR android的develop工具,我们直接在里面就可以进行android的开发。3下载完成后解压,解压后我们进入文件名为eclipse的文件夹中。点击eclipse应用程序,运行。运行如图,和我们常用的eclipse是不一样的因为这个是android的开发工具,只适用于开发android。里面有好的插件已经提供给我们,不需要再进行安装。4进入eclipse界面后,开始新建android项目。输入新建项目名,如果没有特殊要求,点击next一直至最后完成。开始的配置只是一个大体的框架的构建,这些我们可以以后进行修改,最总要的还是代码的编写。5所有配置都完成后就可以开始进行android的开发了。如图:进行android开发的时候建议不要用拖拽控件的方式,建议直接编写代码。ENDjava环境变量配置这里顺便介绍一下java环境变量的配置。1)首先打开环境变量的界面,添加一个JAVA_HOME的值。右击计算机属性,在左侧有高级设置,进入后就会看见环境变量选项了。2)在系统变量中建立java_home,将你的java SDK所在的路径放在里面。建立classpath。同样在系统变量中新建一个classpath,在下面输入.;即可,不用输入其他的值。运行cmd,测试。按win+R打开命令面板,输入cmd,进入后输入java -version然后回车,接着输入javac,回车,看结果是否与下图相同。这里需要注意的是java -version的java后面是有空格的。
2023-07-19 18:15:301

android 没有驱动程序怎么解决

可以使用电脑管家手机助手连接电脑与手机。方法一:双击桌面图标“QQ手机管理for android”,进入QQ手机管理页面。方法二:打开电脑管家,点击的“QQ手机管理”图标,进入QQ手机管理页面。
2023-07-19 18:15:372

gdal for android 如何支持 gpkg

编译环境如下: ubuntu 16.04 LTS android-ndk-r18b GNU Make 4.1 代码版本如下: gdal-2.2.3 curl-7.59.0 按照网上的办法顺利对GDAL进行了交叉编译,坑来了。 利用GDAL的CPLHTTPFetch测试网络抓取功能的时候,没抓取到文件。测试函数如下: bool SaveUrl2File(const char* pszUrl, const char* pszFileName){ if (CPLHTTPEnabled() != TRUE) return false; CPLHTTPResult *pRest = CPLHTTPFetch(pszUrl, NULL); if (pRest == NULL) return false; FILE *pFile = fopen(pszFileName, "wb"); if (pFile == NULL) return false; fwrite(pRest->pabyData, sizeof(GByte), pRest->nDataLen, pFile); fclose(pFile); CPLHTTPDestroyResult(pRest); CPLHTTPCleanup(); return true;} 查看错误信息,大概的意思是需要HTTPS支持,查资料得知,需要在编译curl的时候指定--with-ssl 才能支持HTTPS,然后就开始编译openssl库,本来应该是比较容易的一件事,结果整了足足一天,糟糕的是还没把ssl编译出来。我用的NDK版本比较高,编译器是clang,真是没搞出来,原因是和NDK版本有密切关系,貌似GCC比较容易,clang是google推荐编译器。之后就从网上找ssl库,arm64-v8a的ssl不太好找,还好在GITHUB上找到了。这是成功在curl中集成ssl后的configure输出,注意最后一行Protocols 中要出现HTTPS,另外在编译curl的时候要指定ssl的库目录,和库名字,否则链接的时候可能会找不到库。export LDFLAGS="-L/xxx/xxx/build64dr/openssl/lib" ,指定ssl库的搜索目录export LIBS="-lssl -lcrypto -lz",指定ssl库名字 GDAL编译好后,开始测试 SaveUrl2File 函数,测试失败,提示SSL certificate problem: unable to get local issuer certificate,调用CPLSetConfigOption("GDAL_HTTP_UNSAFESSL", "YES");即可解决,原理就不说了。OK,GDAL在android下可以抓取网络数据了。
2023-07-19 18:15:451

采用qt for android是不是就能绕过java用c++开发Android

是可以,但是最终编译的时候还是需要JDK开发环境的。无论使用什么语言开发,安卓手机只认JAVA,所以最终都必须转换为JAVA才能装到手机里。只是你使用QT的话,最终的编译过程是自动转换的。你不需要懂JAVA也是可以的。但是建议还是对JAVA有一定了解,在开发的时候能避免很多问题。
2023-07-19 18:15:521

qq for android是什么意思

QQ for Android:正在android手机上用的QQ。也是就是说,有正在使用qq for android标志的就是对方的QQ是使用安卓系统登陆的,有可能是安卓手机或者是安卓平板
2023-07-19 18:16:132

手机QQ和QQ for Android是是什么意思

没啥区别吧。
2023-07-19 18:16:237

qq for android是什么意思

Android版QQ只有Android能 使用的 QQ版本
2023-07-19 18:17:013

用电脑挂着QQ 提示qq for android下线是什么意思

你手机允许手机电脑同步在线关闭了,在手机qq设置-设备锁账号安全把许手机电脑同步在线开启就可以电脑手机同步在线了,电脑就不会提示这个了。
2023-07-19 18:17:114

电脑上显示qq for android下线是什么情况?

是手机QQ上线的,可以在QQ上设置多设备
2023-07-19 18:17:215

《GTA5 FOR ANDROID,gta5》安卓版能玩吗?

不可以,原因如下:第一,官方没有出手机版第二,pc端60多gb,手机带动不了。游戏配置要求1.预测配置要求操作系统:Windows 7CPU: Intel Core 2 Duo 3 GHz 或者相似硬盘: 20 GB可用空间显卡: 1GB 显存声卡: 支持DirectX 9DirectX: DX11支持显卡: Nvidia 8600 或者 ATI 38702.最低配置要求处理器: Intel Core 2 Duo 3.66Ghz或者与之相当的AMD Athlon X2 64 4.8Ghz内存: 4 GB Ram显卡: 1GB显存NVIDIA 7900或者ATI X1900可用硬盘空间: 30–40 GB操作系统:Windows 73.推荐配置要求处理器: Intel Core 2 Quad 3.66GHz或者与之相当的AMD Phenom X3 4.81GHz内存: 4 GB显卡: 2GB显存NVIDIA 9800或者1GB显存ATI 4850硬盘可用空间: 30 – 40 GB操作系统: Window 7 SP1
2023-07-19 18:17:371

正在使用qq for android是什么意思

实在说吧就是智能安卓手机上QQ,求采纳
2023-07-19 18:17:4611

get outlook for android什么意思?

获得安卓版本的outlook
2023-07-19 18:18:071

android使用for跳转页面

网络问题、系统卡顿。1、导致android使用for跳转页面,是由于网络问题导致的,用户可切换网络环境即可。2、是由于系统卡顿导致的,用户可退出后重新尝试。
2023-07-19 18:18:141

安卓APP的主要开发原理以及其主要过程是什么?

首先,制作一款APP,必须要有相关的idea,也就是说,第一步是APP的idea形成。其次,就是通过那些idea来进行APP的主要功能设计以及大概界面构思和设计。接着是大功能模块代码编写以及大概的界面模块编写。在界面模块编写之前,开发者可以在模拟器做大的功能开发。但事实上,对于iNotes开发来说,模拟器是不够用,simulator的多触点(multi-touch)支持是非常弱的,很多touch的测试是无法在simulator做的。特别值得注意的是,在功能开发的过程中要注意内存的使用,这也是在iOS开发上最最重要的思维然后把大概的界面和功能连接后,app的大致demo就出来了。值得一提的是,如果有界面设计师,就能节省大量时间。比如界面设计上,可以编写功能模块和设计师同步进行。这样app的demo出来后,基本上可以有界面可以用了。在demo出来之后要自己试用和体验几遍,然后根据情况修改。APP的0.8左右版本完成后可以加入production的图标和部分UI图片,如果没有大错误后,0.9版本可以尝试寻找beta用户。能够在产品设计和开发过程中,找一部分测试用户参与是非常有必要的。对他们的回馈的方法,可以在app发布后对这些用户发放免费产品。这个做法即可以提高产品质量,又可令到测试用户拿到免费的软件产品。根据测试用户的反馈,重复之前demo出来后的一系列步骤。最后在app完成后,加入app icon, iTunesArtwork等等UI元素。反复测试无错误后上传iTunes。之后大概要花7-14天来等候审批。开发工具:MOTODEV Studio for AndroidMOTODEV Studio for Android,这是基于Android的开发环境,为开发者们提供新的MOTODEV App Accelerator Program使他们可以开发出更适合摩托罗拉Android手机的应用程序。J2ME开发插件 Mobile Tools for JavaMobile Tools for Java (MTJ) 是Nokia公司开发的一款 Eclipse插件,用于支持 Java 手机应用程序开发。其前身就是大名鼎鼎的 EclipseME。NOKIA手机开发包 gnokiignokii 是一个NOKIA手机开发包,可支持大多数NOKIA手机的型号。功能无比强大可以修改LOGO,收发短信,拨打/接听电话,编辑铃声。甚至还可以取到对方手机的蜂窝号(Cell ID),从而起到定位的作用。apk文件修改工具 Root ToolsRootTools是一个新的[4],Android开发者可以在这一工具软件的支持下,对.apk格式的文件进行再次修改,让程序表现更加出色,满足用户的需求。Root Tools里面自带有很多工具,比如BusyBox,它里面集成压缩了很多Linux的工具和命令,这样软件开发者在对....IDEA的Android开发插件 idea-androididea-android 是在 IDEA 集成开发环境中开发 Android 应用程序的插件。Android开发工具 MOTODEV StudioMOTODEV Studio是摩托罗拉公司开发的 Android 应用开发工具。这是一个 Eclipse 的插件。 该插件同时也提供了 JavaME 应用的开发和 WebUI 的开发功能。转的
2023-07-19 18:18:342

在Windows平台下怎么编译boost 1.57 for android

 这里是使用NDK进行编译boost的但肯定对我有用吧。。经过一番折腾终于编译成功,,高兴,呵呵! 转载  下面将主要的过程记录下来:  1、下载boost 源码:  Boost for Android  Boost for android is a set of tools to compile the main part of the Boost C++ Libraries for the Android platform.  Currently supported boost versions are 1.45.0, 1.48.0 and 1.49.0.  因此下载最新的 1.49 版本,下载完成后进行打补丁  2、下载补丁代码  boost-1_49_0  3、打补丁代码  boost_1_49_0.tar.bz2 放在android的 external 下解压:  tar -xjvf external/boost_1_49_0.tar.bz2  将boost-1_49_0.patch放在externaloost_1_49_0下面根目录执行:  patch -Np1 -d external/boost_1_49_0 < external/boost_1_49_0/boost-1_49_0.patch  4、编写boost的makefile文件,即Android.mk  LOCAL_PATH:= $(call my-dir)  common_SRC_FILES :=   libs/thread/src/pthread/thread.cpp   libs/thread/src/pthread/once.cpp   common_SRC_FILES +=   libs/filesystem/v3/src/codecvt_error_category.cpp   libs/filesystem/v3/src/operations.cpp   libs/filesystem/v3/src/path.cpp   libs/filesystem/v3/src/path_traits.cpp   libs/filesystem/v3/src/portability.cpp   libs/filesystem/v3/src/utf8_codecvt_facet.cpp   libs/system/src/error_code.cpp   libs/system/src/local_free_on_destruction   include $(CLEAR_VARS)  LOCAL_MODULE:= libboost  LOCAL_SRC_FILES := $(common_SRC_FILES)  prebuilt_stdcxx_PATH := prebuilts/ndk/current/sources/cxx-stl/gnu-libstdc++  LOCAL_C_INCLUDES :=   $(LOCAL_PATH)/boost   $(prebuilt_stdcxx_PATH)/include   $(prebuilt_stdcxx_PATH)/libs/$(TARGET_CPU_ABI)/include/   LOCAL_C_INCLUDES +=   $(prebuilt_stdcxx_PATH)/include   $(prebuilt_stdcxx_PATH)/libs/$(TARGET_CPU_ABI)/include/   $(prebuilt_supccxx_PATH)/include  LOCAL_CFLAGS += -fvisibility=hidden -lpthread  LOCAL_CPPFLAGS += -fexceptions -frtti  LOCAL_SHARED_LIBRARIES := libc libstdc++ libstlport  LOCAL_LDFLAGS += -L$(prebuilt_stdcxx_PATH)/libs/$(TARGET_CPU_ABI) -lgnustl_static -lsupc++  LOCAL_MODULE_TAGS := optional  include $(BUILD_SHARED_LIBRARY)  比较重要的是上面 红色 部分文字  最后编译生成:  target thumb C++: libboost <= external/boost_1_49_0/libs/thread/src/pthread/thread.cpp  target thumb C++: libboost <= external/boost_1_49_0/libs/thread/src/pthread/once.cpp  target thumb C++: libboost <= external/boost_1_49_0/libs/filesystem/v3/src/codecvt_error_category.cpp  target thumb C++: libboost <= external/boost_1_49_0/libs/filesystem/v3/src/operations.cpp  target thumb C++: libboost <= external/boost_1_49_0/libs/filesystem/v3/src/path.cpp  target thumb C++: libboost <= external/boost_1_49_0/libs/filesystem/v3/src/path_traits.cpp  target thumb C++: libboost <= external/boost_1_49_0/libs/filesystem/v3/src/portability.cpp  target thumb C++: libboost <= external/boost_1_49_0/libs/filesystem/v3/src/utf8_codecvt_facet.cpp  target thumb C++: libboost <= external/boost_1_49_0/libs/system/src/error_code.cpp  target SharedLib: libboost (out/target/product/godbox/obj/SHARED_LIBRARIES/libboost_intermediates/LINKED/libboost.so)  target Symbolic: libboost (out/target/product/godbox/symbols/system/lib/libboost.so)  target Strip: libboost (out/target/product/godbox/obj/lib/libboost.so)  Install: out/target/product/godbox/system/lib/libboost.so  成功生成 libboost.so 库
2023-07-19 18:18:481

安卓Android系统版本的开发语言是什么

安卓Android系统版本,开发语言是Java;其他系统开发使用语言:1、苹果ios系统版本,开发语言是Objective-C;2、微软Windowsphone系统版本,开发语言是C#;3、塞班symbian系统版本,开发语言是C。App开发,是指专注于手机应用软件开发与服务。App是application的缩写,通常专指手机上的应用软件,或称手机客户端。另外目前有很多在线app开发平台。当然移动互联网时代是全民的移动互联网时代,是每个人的时代,也是每个企业的时代。APP便捷了每个人的生活,APP开发让每个企业都开始了移动信息化进程。扩展资料:APP开发工具MOTODEVStudioforAndroidMOTODEVStudioforAndroid,这是基于Android的开发环境,为开发者们提供新的MOTODEVAppAeleratorProgram使他们可以开发出更适合摩托罗拉Android手机的应用程序。J2ME开发插件MobileToolsforJavaMobileToolsforJava(MTJ)是Nokia公司开发的一款Eclipse插件,用于支持Java手机应用程序开发。其前身就是大名鼎鼎的EclipseME。NOKIA手机开发包gnokiignokii是一个NOKIA手机开发包,可支持大多数NOKIA手机的型号。功能无比强大可以修改LOGO,收发短信,拨打/接听电话,编辑铃声。甚至还可以取到对方手机的蜂窝号(CellID),从而起到定位的作用。apk文件修改工具RootToolsRootTools是一个新的工具软件,Android开发者可以在这一工具软件的支持下,对.apk格式的文件进行再次修改,让程序表现更加出色,满足用户的需求。RootTools里面自带有很多工具,比如BusyBox,它里面集成压缩了很多Linux的工具和命令,这样软件开发者在对....IDEA的Android开发插件idea-androididea-android是在IDEA集成开发环境中开发Android应用程序的插件。Android开发工具MOTODEVStudioMOTODEVStudio是摩托罗拉公司开发的Android应用开发工具。这是一个Eclipse的插件。该插件同时也提供了JavaME应用的开发和WebUI的开发功能。
2023-07-19 18:18:551

Win10安卓模拟器怎么用

BlueStacks先把游戏安装程序APK下载到电脑BlueStacks模拟器开启状态下,在下载好的APK上点鼠标右键,选择打开方式为BlueStacks,开始安装应用程序安卓SDK版可用百度手机助手或豌豆荚安装应用
2023-07-19 18:19:052

android studio中怎么快速生成for循环语句

很简单, fori就可以了. 当对象是list等集合的时候, 还可以 集合对象 .for 或 .fori 比如 list.fori再按enter就好了.Android studio中有很多这样的功能你可以按Ctrl + J 看提示.
2023-07-19 18:19:371

free download play store for android

你好意思是:安卓(手机)免费游戏下载商店。希望可以帮到你谢谢
2023-07-19 18:20:392

Firefox for Android,怎么配对

您好,请您找到菜单, 设置“同步”,然后出现密码,输入到已经同步的火狐中即可。这个就是设备同步的操作了。
2023-07-19 18:20:471