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; &…

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

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

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

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

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;实现了控制面与数据面的分离。…

数组练习 Leetcode 566.重塑矩阵

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

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

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

进阶Docker3:Dokerfile构建镜像

目录 Dockerfile 构建基础镜像 基本机构 命令&#xff1a; 命令解释&#xff1a; 准备工作 创建镜像 上传镜像 Dockerfile Dockerfile 是一个文本格式的配置文件&#xff0c; 用户可以使用 Dockerfile 来快速创建自定义的镜像&#xff0c;另外&#xff0c;使 用Docke…

Docker 安装 MySQ

Docker 安装 MySQL MySQL 是世界上最受欢迎的开源数据库。凭借其可靠性、易用性和性能&#xff0c;MySQL 已成为 Web 应用程序的数据库优先选择。 1、查看可用的 MySQL 版本 访问 MySQL 镜像库地址&#xff1a;https://hub.docker.com/_/mysql?tabtags 。 可以通过 Sort b…

使用docker部署RStudio容器并结合内网穿透实现公网访问

文章目录 前言1. 安装RStudio Server2. 本地访问3. Linux 安装cpolar4. 配置RStudio server公网访问地址5. 公网远程访问RStudio6. 固定RStudio公网地址 前言 RStudio Server 使你能够在 Linux 服务器上运行你所熟悉和喜爱的 RStudio IDE&#xff0c;并通过 Web 浏览器进行访问…

旅游项目day04

1. JWT有效期 封装用户登录对象&#xff0c; 在指定时间过期 2. 有些接口需要登录&#xff1f;有些不需要登录&#xff1f; 后端如何知道a需要登录&#xff0c;b不需要登录&#xff1f; 注解。 3. 目的地 一个区域下面包含多个目的地 数据库表&#xff1a; 1. 区域表 2.…

交互设计:提升用户动机

之前给大家介绍了交互设计的底层模型——最新版福格行为模型。 模型告诉我们想让用户进行某个行为有3个步骤&#xff0c;第一个步骤是检查有没有&#xff08;合理的&#xff09;行为提示&#xff0c;我把它翻译成能否吸引用户注意&#xff0c;感兴趣的同学可以查看《交互设计之…

Linux--进程控制

进程终止 进程终止是指一个正在运行的进程结束其执行并释放占用的系统资源的过程。进程可以通过以下几种方式终止&#xff1a; 正常终止&#xff1a;进程完成了它的任务&#xff0c;或者遇到了终止条件&#xff0c;例如调用了exit()函数或主函数执行完毕。 异常终止&#xff1…

代码随想录刷题题Day36

刷题的第三十六天&#xff0c;希望自己能够不断坚持下去&#xff0c;迎来蜕变。&#x1f600;&#x1f600;&#x1f600; 刷题语言&#xff1a;C Day36 任务 ● 123.买卖股票的最佳时机III ● 188.买卖股票的最佳时机IV 1 买卖股票的最佳时机III 123.买卖股票的最佳时机III …

计算机网络——数据链路层(1)

一、概述 在计算机网络中&#xff0c;数据链路层承担着点对点通信的任务&#xff0c;用于跨物理层在网段节点之间参数数据。它在网络分层中处于物理层之上&#xff0c;网路层之下。 在链路层的讨论中&#xff0c;我们将看到两种截然不同类型的链路层信道。第一种类型是广播信道…

The Blocks Problem

本题是一道模拟题&#xff0c;但个人感觉挺有意思的&#xff08;思路很明确&#xff0c;但是WA了好几发才过&#xff09;&#xff0c;因此来讲一讲思路。 题面 题面PDF 样例输入 10 move 9 onto 1 move 8 over 1 move 7 over 1 move 6 over 1 pile 8 over 6 pile 8 over 5…

设计模式——1_5 享元(Flyweight)

今人不见古时月&#xff0c;今月曾经照古人 ——李白 文章目录 定义图纸一个例子&#xff1a;可以复用的样式表绘制表格降本增效&#xff1f;第一步&#xff0c;先分析 变化和不变的地方第二步&#xff0c;把变化和不变的地方拆开来第三步&#xff1a;有没有办法共享这些内容完…