Android 开发简介

前言

Android 是由 Google 领导的开放手机联盟开发的基于 Linux 的开源移动操作系统。有关一般详细信息,请参阅 Android 主网站。

Android 开发与其他平台的开发有很大不同。因此,在开始针对 Android 编程之前,我们建议您确保熟悉以下关键主题:

  1. Java 编程语言是 Android 操作系统的主要开发技术。此外,您还可以找到有关 Java 的 Oracle 文档。
  2. Java 本机接口 (JNI) 是一种在 Java 虚拟机中运行本机代码的技术。此外,您还可以找到有关 JNI 的 Oracle 文档。
  3. Android Activity 及其生命周期,这是一个必不可少的 Android API 类。
  4. OpenCV 开发肯定需要对 Android Camera 的细节有一定的了解。

Android 开发的手动环境设置

在本教程中,我们将使用官方的 Android Studio IDE 和一组其他免费提供的工具。

获取工具和依赖项

以下是如何获得一个准备好工作的环境:

  1. 下载并安装 Android Studio:
    • Ubuntu的:
      1. 下载 Android Studio:https://developer.android.com/studio
      2. 提取 tar.gz 存档
      3. 按照中的说明进行操作:在终端中打开文件夹并运行Install-Linux-tar.txtandroid-studio/bin./studio.sh
      4. 通过 GUI 执行标准安装
      5. 或者,您可以通过单击菜单“工具”-“创建桌面条目”在桌面上添加快捷方式>以便快速访问。创建或打开任何项目后,将显示该菜单。
    • Windows:只需从官方网站下载 Android Studio 并运行安装程序即可。
  2. 安装全新的 Android SDK 和 NDK:
    1. 在 Android Studio 中打开 SDK 管理器(自定义 -> 所有设置 -> 语言和框架 -> Android SDK)
    2. 启用“显示包详细信息”复选框

      sdk_ndk_manager.png

    3. 检查最新版本的 SDK 和 NDK,然后按 OK
    4. 确保您的设备支持所选的 SDK 版本
  3. 安装构建所需的所有软件包:
    • sudo apt install git cmake ninja-build openjdk-17-jdk openjdk-17-jre
    • 其余必需的包是依赖项,应自动安装

查看 OpenCV 示例

  1. 从 Github 或 SourceForge 的官方发布页面从 Android SDK 下载 OpenCV。
  2. 使用操作系统工具提取 zip 存档。
  3. 在 Android Studio 中打开项目。<YOUR_OPENCV_BUILD_FOLDER>/OpenCV-android-sdk/samples
  4. 连接您的设备
    • 应在设备上启用调试,您可以在 Web 上找到有关它的说明
    • 或者,您可以使用 Android Studio 附带的虚拟设备

      choose_device.png

  5. 从下拉菜单中选择一个示例(例如,),然后运行它。15-puzzle

用于测试和调试的设置设备

通常,上述配方按预期工作,但在某些情况下,必须执行其他操作。在本节中,我们将介绍一些情况。

Windows 主机

如果你有 Windows 10 或更高版本,则无需执行其他操作即可连接手机并在其上运行示例。但是,早期的 Windows 版本需要更长的过程:

  1. 在Android设备上启用USB调试(通过“设置”菜单)。
  2. 使用 USB 数据线将 Android 设备连接到您的 PC。
  3. 转到“开始”菜单,然后右键单击“计算机”。在上下文菜单中选择“管理”。系统可能会要求您提供管理权限。
  4. 在左窗格中选择“设备管理器”,然后在列表中查找未知设备。您可以尝试拔下它,然后重新插入,以检查它是否是列表中显示的确切设备。

    usb_device_connect_01.png

  5. 试试你的运气,在不做任何修改的情况下安装谷歌USB驱动程序:右键单击未知设备,选择“属性”菜单项->“详细信息”选项卡-“>”更新驱动程序“按钮。

    usb_device_connect_05.png

  6. 选择浏览计算机以查找驱动程序软件。

    usb_device_connect_06.png

  7. 指定文件夹的路径。<Android SDK folder>/extras/google/usb_driver/

    usb_device_connect_07.png

  8. 如果您收到安装未经验证的驱动程序的提示并报告成功 - 您已完成 USB 驱动程序安装。

    usb_device_connect_08.png

    usb_device_connect_09.png

  9. 否则(如下所示的失败),请按照以下步骤操作。

    usb_device_connect_12.png

  10. 再次右键单击未知设备,选择“属性”->“详细信息”->“硬件 ID”,然后复制类似 的行。USB\VID_XXXX&PID_XXXX&MI_XX

    usb_device_connect_02.png

  11. 现在打开文件 .选择 Google.NTx86 或 Google.NTamd64 部分,具体取决于您的主机系统体系结构。<Android SDK folder>/extras/google/usb_driver/android_winusb.inf

    usb_device_connect_03.png

  12. 您的设备应该有一条与现有记录类似的记录,您需要手动添加一条。

    usb_device_connect_04.png

  13. 保存文件,然后再次尝试安装 USB 驱动程序。android_winusb.inf

    usb_device_connect_05.png

    usb_device_connect_06.png

    usb_device_connect_07.png

  14. 这一次安装应该会成功。

    usb_device_connect_08.png

    usb_device_connect_09.png

  15. 未知设备现在被识别为 Android 手机。

  16. 可以通过 adb devices 命令在控制台中验证设备 USB 连接是否成功。

    usb_device_connect_11.png

  17. 现在,在 Eclipse 中,转到 Run -> Run/Debug 以常规或调试模式运行您的应用程序。设备选择器可让您在设备中进行选择。
Linux 主机

虽然最新的 Ubuntu 版本适用于连接的 Android 设备,但旧版本可能存在问题。但是,它们中的大多数都可以轻松修复。您必须创建一个新的 **/etc/udev/rules.d/51-android.rules** 配置文件,其中包含有关您的 Android 设备的信息。您可以在此处找到一些供应商 ID 或执行 lsusb 命令来查看插入的 Android 设备的 VendorID。以下是LG设备的此类文件的示例:

子系统==“usb”, ATTR{idVendor}==“1004”, MODE=“0666”, GROUP=“plugdev”

然后重新启动 adb 服务器(最好重新启动系统),插入 Android 设备并执行 adb devices 命令。您将看到连接的设备列表:

savuor@rostislav-laptop:~/Android/Sdk/platform-tools$ ./adb devices
连接的设备列表
R58MB40Q3VP设备
savuor@rostislav-laptop:~/Android/Sdk/platform-tools$
Mac OS 主机

无需执行任何操作,只需通过 USB 连接设备并运行 adb devices 即可检查连接。

后续步骤

现在,当你设置和配置了 OpenCV4Adroid SDK 实例时,你可能希望继续在你自己的应用程序中使用 OpenCV。您可以在单独的使用 OpenCV 进行 Android 开发教程中了解如何执行此操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/632260.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Docker】安装 Nacos容器并根据Nginx实现负载均衡

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《Docker实战》。&#x1f3af;&#x1f3af; &…

Template -- React

React 版本 Node 21.6.0Npm 10.2.4 项目 创建 npm init vite 项目名称reactjsnpm inpm run dev 依赖 npm i axios # 网络 npm i antd --save # UI npm i ant-design/icons npm i react-router-dom # 路由npm i sass -D # …

什么是技术架构?架构和框架之间的区别是什么?怎样去做好架构设计?(一)

什么是技术架构?架构和框架之间的区别是什么?怎样去做好架构设计?(一)。 在软件行业,对于什么是架构,都有很多的争论,每个人都有自己的理解。在不同的书籍上, 不同的作者, 对于架构的定义也不统一, 角度不同, 定义不同。 一、架构是什么 Linux 有架构,MySQL 有架构,J…

漏洞检测和评估【网站子域扫描工具02】

上一篇&#xff1a;爬取目标网站的域名和子域名【网站子域扫描工具01】 在Python中&#xff0c;有一些流行的漏洞扫描库可以对子域进行漏洞扫描和评估&#xff0c;比如Nmap、Sublist3r等。 1.端口扫描 以下是一个简单的示例代码&#xff0c;展示了如何使用Nmap进行基本的端口扫…

由于找不到d3dcompiler_43.dll缺失,无法打开软件的解决方法分享

d3dcompiler43.dll是什么文件&#xff1f;为什么会出现丢失的情况&#xff1f;又该如何解决呢&#xff1f;本文将详细介绍d3dcompiler43.dll的作用和影响&#xff0c;并提供6个有效的解决方法。 一、d3dcompiler43.dll是什么文件&#xff1f; d3dcompiler43.dll是DirectX SDK…

OSPF协议

OSPF:开放式最短路径优先协议 无类别链路状态型路由协议&#xff1b;组播更新224.0.0.5、224.0.0.6支持等开销负载均衡&#xff1b; 链路状态协议&#xff0c;邻居间共享拓扑&#xff0c;优势在于防环和选路&#xff0c;缺点为更新量和计算量很大&#xff1b; 故OSPF为了能够…

Windows 下使用C#开启蓝牙(未解决的坑)

需求 当程序检测到蓝牙未打开时需要程序自动将W10的蓝牙开启。 资料 Turn on/off Bluetooth radio/adapter from cmd/powershell in Windows 10 - Super User 上的这个连接是通过powershell 开启蓝牙具体代码如下 [CmdletBinding()] Param ([Parameter(Mandatory$true)][V…

python脚本多个文件夹下多个文件中sql语句片段比对

一、需求: 日常测试授权脚本,需要检查多个行业文件夹下单独的授权脚本和汇总授权脚本,一个文件根目录下有多个子文件夹,子文件夹下有多个sql文件,人为比对较为耗时。 需要实现在文件中找到某个sql语句片段,然后遍历比对此sql语句片段在各目录各文件中是否一致。 二、思路…

MySQL入门篇:事物操作(开启事物,提交事物,回滚事物),事物四大特性(ACID),并发事物问题(脏读,不可重复读,幻读),事物隔离级别

目录 1.事物简介2.事物操作1.查看/设置事物提交方式&#xff08;方式1&#xff09;2.开启事物&#xff08;方式2&#xff09;3.提交事物4.回滚事物 3.事物四大特性(ACID)1.原子性&#xff08;Atomicity)2.一致性&#xff08;Consistency)3.隔离性&#xff08;lsolation)4.持久性…

MyBatisPlus学习笔记四-扩展功能

1、代码生成器 1.1、官方的1 1.3、官方的2-idea插件 1.3、非官方的-idea插件 2、静态工具 先查询&#xff0c;再分组 3、逻辑删除 4、枚举处理器 5、JSON处理器

使用mininet快速入门ONOS路由交换技术与原理

在SDN下路由交换与传统硬件集成方式的路由交换技术有许多相似之处。其中一个比较重要的点是传统交换机中ASIC (Application Specific Integrated Circuit&#xff0c;专用集成电路)决定了其数据平面所支持的功能&#xff0c;而在SDN中&#xff0c;实现了控制面与数据面的分离。…

UI学习-入门

教程&#xff1a;零基础学UI设计&#xff0c;应该先从哪些设计软件入手&#xff1f;【酸梅干超人出品】 一 软件 云端协作工具&#xff1a;即时设计、figma 原型设计&#xff1a;protopie 平面设计&#xff1a; PS 即时设计可设置动态交互、可设置样机。该平台教学方便做的…

selenium上传单个文件及上传多个文件

单个文件 直接传入文件路径 element driver.find_element_by_xpath(//input[type"file"]) element.send_keys(/home/data/download/test.png)多个文件 使用 \n 或者 \t\n 分割文件路径 element driver.find_element_by_xpath(//input[type"file"]) e…

数组练习 Leetcode 566.重塑矩阵

在 MATLAB 中&#xff0c;有一个非常有用的函数 reshape &#xff0c;它可以将一个 m x n 矩阵重塑为另一个大小不同&#xff08;r x c&#xff09;的新矩阵&#xff0c;但保留其原始数据。 给你一个由二维数组 mat 表示的 m x n 矩阵&#xff0c;以及两个正整数 r 和 c &#…

第五天业务题

5-1 你们项目中签到为什么要使用bitmap bitmap是Redis中的String类型里的一种类型&#xff0c;存储数据是以二进制&#xff08;bit位&#xff09;为单位进行存储的。在处理大量数据统计和判断时&#xff0c;只占用非常小的一部分内存&#xff0c;且计算速度非常高效。 在项目中…

网络工程师:数据库基础知识面试题(八)

84.数据库技术是什么&#xff1f;主流的数据库管理系统软件有哪些? 数据库技术是指用于存储、管理和操作大量结构化数据的技术。它涉及数据库的设计、建模、查询语言、事务处理、数据安全性、性能优化等方面。 主流的数据库管理系统&#xff08;DBMS&#xff09;软件有以下几…

貌似起名可以用这个

貌似起名可以用这个 很多变量或者函数起名字都会移除元音字符&#xff0c;可以考虑使用tr的-d参数&#xff0c;如下&#xff1a; $ echo "Hello World, Welcome to Linux!" | tr -d a,o,e,i Hll Wrld Wlcm t Lnux!不过感觉删除的多了&#xff0c;也不一定是好事。。…

《设计模式的艺术》笔记 - 原型模式

介绍 使用原型实例指定创建对象的种类&#xff0c;并且通过克隆这些原型创建新的对象。原型模式是一种对象创建型模式。 实现 myclass.h // // Created by yuwp on 2024/1/12. //#ifndef DESIGNPATTERNS_MYCLASS_H #define DESIGNPATTERNS_MYCLASS_H#include <iostream&g…

Day32- 贪心算法part06

一、单调递增的数字 题目一&#xff1a;738. 单调递增的数字 738. 单调递增的数字 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&#xff0c;且数字呈 单调递…

k8s---ingress对外服务(ingress-controller)

ingress 概念 k8s的对外服务&#xff0c;ingress service作用现在两个方面&#xff1a; 1、集群内部&#xff1a;不断跟踪的变化&#xff0c;更新endpoint中的pod对象&#xff0c;基于pod的ip地址不断变化的一种服务发现机制。 2、集群外部&#xff1a;类似于负载均衡器&a…