Android安卓应用

基于Qt平台开发安卓应用                                                   基于Qt平台开发安卓应用         在之前的Qt学习中,使用QtGUI来实现简单的界面与后台功能设计。这样开发出来的应用往往界面元素比较单一,美感几乎可以省略,与其他移动平台开发的App相比,确实逊色不少。基于此,Qt平台下开发GUI开始逐渐使用QML。使用QML开发的应用不仅界面美感十足,... 阅读详情

安卓应用

在Android应用程序框架层开发硬件访问服务的目的是为了让上层的Android应用程序能够访问对应的硬件设备。

目录结构 :

~/Android/packages/experimental/Freg
    # 配置文件
    AndroidManifest.xml
    Android.mk
    # 源代码目录
    src
        shy/luo/freg
            Freg.java
    # 资源目录res
    res
        layout
            main.xml
            values
                string.xml
            drawable
                icon.png

Freg.java :

// Android\packages\experimental\Freg\src\shy\luo\freg\Freg.java

public class Freg extends Activity implements OnClickListener 
{
    private final static String LOG_TAG = "shy.luo.freg.FregActivity";

    private IFregService fregService = null;

    private EditText valueText = null;
    private Button readButton = null;
    private Button writeButton = null;
    private Button clearButton = null;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

       // 将这个 Binder 代理对象接口转换为一个 FregService 代理对象接口,
        //并且保存在 Activity 组件 Freg 的成员变量 fregService 中
        fregService = IFregService.Stub.asInterface(
            // 获得一个名称为“ freg ”的服务的 Binder 代理对象接口
            ServiceManager.getService("freg"));

        // 编辑框, 用来显示或者输入虚拟硬件设备freg的寄存器val的值
        valueText = (EditText)findViewById(R.id.edit_value);
        // 三个按钮Read、 Write和Clear
        // 读虚拟硬件设备freg的寄存器val
        readButton = (Button)findViewById(R.id.button_read);
        // 写虚拟硬件设备freg的寄存器val
        writeButton = (Button)findViewById(R.id.button_write);
        // 清空编辑框
        clearButton = (Button)findViewById(R.id.button_clear);

        readButton.setOnClickListener(this);
        writeButton.setOnClickListener(this);
        clearButton.setOnClickListener(this);

        Log.i(LOG_TAG, "Freg Activity Created");
    }

    @Override
    public void onClick(View v) 
    {
        if(v.equals(readButton)) 
        {
            try {
                // 获取虚拟硬件设备freg的寄存器val的值
                int val = fregService.getVal();
                String text = String.valueOf(val);
                valueText.setText(text);
            } catch (RemoteException e) {
                Log.e(LOG_TAG, "Remote Exception while reading value from freg service.");
            }        
        }
        else if(v.equals(writeButton)) 
        {
            try {
                String text = valueText.getText().toString();
                int val = Integer.parseInt(text);
                // 设置虚拟硬件设备freg的寄存器val的值
                fregService.setVal(val);
            } catch (RemoteException e) {
                Log.e(LOG_TAG, "Remote Exception while writing value to freg service.");
            }
        }
        else if(v.equals(clearButton)) 
        {
            String text = "";
            valueText.setText(text);
        }
    }
}

main.xml 主界面配置文件

<-- packages\experimental\Freg\res\layout\main.xml -->
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <-- 显示一个TextView控件 -->
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" 
        android:gravity="center">
        <TextView 
            android:layout_width="wrap_content"
               android:layout_height="wrap_content" 
            android:text="@string/value">
        </TextView>
        <EditText 
             android:layout_width="fill_parent"
            android:layout_height="wrap_content" 
            android:id="@+id/edit_value"
            android:hint="@string/hint">
        </EditText>
    </LinearLayout>
     <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" 
        android:gravity="center">

         <-- 三个Button控件 -->
        <Button 
            android:id="@+id/button_read"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/read">
        </Button>
        <Button 
            android:id="@+id/button_write"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/write">
        </Button>
        <Button 
            android:id="@+id/button_clear"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/clear">
        </Button>
    </LinearLayout>
</LinearLayout>

strings.xml 字符串资源文件

<-- packages\experimental\Freg\res\values\string.xml -->
<?xml version="1.0" encoding="utf-8"?>
<-- 应用程序中使用到的各个字符串 -->
<resources>
    <string name="app_name">Freg</string>
    <string name="value">Value</string>
    <string name="hint">Please input a value...</string>
    <string name="read">Read</string>
    <string name="write">Write</string>
    <string name="clear">Clear</string>
</resources>

icon.png 图标文件

AndroidManifest.xml 配置文件

<-- /Android/packages/experimental/Freg/AndroidManifest.xml -->
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="shy.luo.freg"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <-- 定义了一个Activity组件 -->
        <activity android:name=".Freg"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

Android.mk 编译脚本文件

# ~/Android/packages/experimental/Freg/Android.mk

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_SRC_FILES := $(call all-subdir-java-files)
# 指定程序的名称为“Freg”
LOCAL_PACKAGE_NAME := Freg

include $(BUILD_PACKAGE)

编译和打包

mmm ./packages/experimental/Freg/

make snod

打包后得到的Android系统镜像文件system.img就包含有应用程序Freg

启动

emulator -kernel kernel/goldfish/arch/arm/boot/zImage

由于个人水平有限, 难免有些错误, 希望各位点评

RN安卓应用打包指南 React Native(简称RN)是一个用于开发跨平台移动应用的开源框架,它允许你使用JavaScript和React来构建在iOS和Android上运行的应用。 阅读详情

相关推荐

别再只跑Demo了!用MovieLens数据集完整复现一个电影推荐系统(Python/Pandas实战)

本文详细介绍了如何利用MovieLens数据集从零构建一个完整的电影推荐系统,涵盖数据清洗、特征工程、推荐算法实现(协同过滤和矩阵分解)以及Web服务部署的全流程。通过Python和Pandas实战,读者可以掌握推荐系统的核心技术和生产环境部署技巧,不再局限于简单的Demo运行。

weixin_29062865的博客 150

如何下载并安装Android ,手把手教你安卓应用开发

如果你要做安卓应用开发,那Android Studio(后面简称as)是必不可少的,那我们去哪里下载呢? 官网,当然是去官网下载了:https://developer.android.google.cn/ 进入官网后,找到as的下载入口 点击进入到:https://developer.android.google.cn/studio 然后进去下载选项或者直接下载最新版本 直接下载的是对应你自己电脑系统可以安装的as。 选项进去后,你可以看到各个系统可以下载的as 点击下载后..

vipStone2的博客 2万+

ESP32S3学习——i2c,点亮0.96寸oled

ESP32S3学习——i2c,点亮0.96寸oled

HandBAI的博客 1万+

安卓应用目录结构

安卓应用目录结构介绍和使用

m0_62786921的博客 491

告别GIS软件!用R语言ggplot2+ggmapcn绘制出版级世界地图(附5种投影对比图)

本文提供了一份完整的实践指南,教你如何利用R语言及其强大的ggplot2生态系统,结合ggmapcn包,绘制出出版级的世界地图。文章详细对比了五种经典地图投影(如摩尔维德、罗宾森投影)的代码实现与视觉差异,并讲解了如何添加比例尺、指北针等专业元素,最终导出高清PDF,实现从数据分析到专业可视化的全流程代码化操作,彻底告别传统GIS软件。

p5l2m9n4o6q的博客 409

2024高项范文-论项目成本管理

例如,在需求分析和设计阶段,安排了较多经验丰富的人员,确保基础工作的高质量完成,同时也避免了后续因需求变更等问题导致的时间和成本浪费。虽然项目进度略有延迟,但通过有效的成本管理和调整,最终在可控的成本范围内完成了项目,并且软件的质量也得到了保障。通过这个案例可以看出,在项目成本管理过程中,要紧密结合时间管理,根据实际情况灵活调整策略,注重风险的防范和应对,才能实现时间和成本的平衡,确保项目的成功。资源规划是成本基准形成的基础。识别和评估项目中的成本风险,并制定相应的应对措施,以降低风险对项目成本的影响。

xjflion的博客 1190

安卓应用开发总结

开发人员可以使用安卓 SDK 中提供的各种工具和库来创建功能强大的应用程序,包括用户界面设计、数据存储和处理、网络连接、多媒体和传感器等功能。Android Studio:Android Studio是Google官方推出的Android应用开发工具,集成了开发所需的各种工具和库,开发者需要熟悉Android Studio的使用方法。开发者需要掌握数据存储的方式和方法。总之,开发安卓应用程序需要大量的努力和耐心,但如果你遵循上述最佳实践,并专注于用户需求和设计良好的用户界面,就可以创建出出色的应用程序。

tt12514的博客 1818

一文读懂:CAN总线Bus-Off的触发条件与自动恢复机制

本文详细解析CAN总线Bus-Off状态的触发条件与自动恢复机制。根据ISO 11898-1标准,当发送错误计数器(TEC)超过255时节点进入Bus-Off状态,并通过检测128次总线空闲条件实现自动恢复。文章结合实战案例,探讨硬件故障、软件配置及电磁干扰等常见触发场景,并提供快慢恢复策略与调试方法,帮助工程师快速定位并解决CAN网络故障。

rgv234567的博客 361

使用Android Studio创建带登录功能的安卓应用

其中包含源码,截图以及实验报告,工程打包等,有兴趣的同学可以下载。通过以上步骤,就可以创建一个带有登录功能的Android应用。

xcc212的博客 2592

YOLO26魔改:ICIP2026 SDTA|单深度转置注意力注入C2PSA,长程依赖与局部细节双增强,mAP提升显著

多尺度适配:SDTA的深度卷积与C2PSA的空间注意力结合,增强对多尺度目标的结构感知,改善遮挡与密集场景下的检测鲁棒性。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 293

前端build工程的时候 出现 `build.rollupOptions.external 的解决方法

看到这个Bug,理性分析: 遇到 Rollup failed to resolve import “@vue/devtools-api” 错误可能是由于 Pinia 使用了 @vue/devtools-api 模块,而 Vite 的 Rollup 插件无法解析这个模块 ps:但是我前一秒还可以,加了个别代码,突然不行,我是不相信的 = - =

码农研究僧的博客 3056

Windows Subsystem for Android:让你的Windows电脑也能畅玩安卓应用

还在为需要在电脑和手机之间频繁切换而烦恼吗?你是否希望能在Windows电脑上直接运行你最喜欢的安卓应用?Windows Subsystem for Android(WSA)正是微软为Windows 11用户带来的革命性解决方案!🎯 这个神奇的系统组件让安卓应用能够无缝运行在Windows环境中,彻底打破了操作系统之间的壁垒。无论你是想要在电脑上使用手机专属的应用,还是需要在Windows环境

gitblog_00696的博客 3万+

【2024/3/12 更新】Windows Server 2019 服务配置与管理汇总

本栏目一共介绍了17种Windows Server 2019 的服务配置与管理,为了方便大家阅读理解,特意总结了17种服务的一些内容。具体说明如下所示

VMware, Windows, Linux, Cisco, Container, Kubernetes, Kali 2万+

Android基础学习笔记3: 安卓应用目录结构

Android基础学习笔记3: 安卓应用目录结构

m0_63691734的博客 1118

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

安卓应用兼容新方案:Android Translation Layer(ATL)

另外 ATL 项目起步较晚,面对 WINE 的日益成熟,越来越多的 Windows 应用可以运行在 Linux 系统上,ATL 的市场前景并不乐观。它通过用户空间的兼容层直接翻译安卓应用的系统调用(syscall),直接调用 Linux 系统的原生 API,从而对内核版本无要求,适应面更广。ATL 借鉴了 WINE 的设计哲学,通过重新实现 Android 框架 API(类似 WINE 对 Windows API 的转译逻辑),试图以更轻量、更原生的方式实现安卓应用与 Linux 桌面的无缝集成。

云水木石 754

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

安卓应用kill 自身并启动

安卓应用kill自身并启动 1.为了杀掉程序并重新启动,需要借助一个中间activity,并且该activity是另外一个进程,在该activity中调用killProcess杀掉原进程                     android:screenOrientation="portrait"                   android:process=":pid_

安卓鸟的专栏 3134

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

基于Java和Android Studio的五子棋安卓应用源码

基于Java和Android Studio的五子棋安卓应用源码 【下载地址】基于Java和AndroidStudio的五子棋安卓应用源码 这是一个基于Java和Android Studio开发的五子棋安卓应用,专为学生期末大作业设计。五子棋作为经典策略游戏,规则简单却充满智慧,本项目旨在通过移动设备为用户带来全新游戏体验...

gitblog_06722的博客 451

Android Studio-安卓应用目录结构03

安卓应用目录结构

HTML778的博客 4723

Android Studio打包发布Flutter安卓应用

打包发布安卓应用主要有5步, 修改android/app/src/main/AndroidManifest.xml 首先通过安卓模式打开项目 然后等待项目加载完成,出现下面情况为加载完成: 如果出现异常可以参考这篇文章:启动 flutter项目时报Could not find com.android.tools.build:gradle:3.2.1. 然后修改APP对应的名字,也就是在手机桌面...

芊雨的博客 2959

探索Android开发的新境界——《完整的安卓应用开发课程101》

探索Android开发的新境界——《完整的安卓应用开发课程101》 在这个日新月异的移动应用时代,掌握一项全面且现代化的安卓应用开发技能至关重要。这就是我们为你精心准备的开源项目——《完整的安卓应用开发课程101》,带你一步步打造属于你的音乐流媒体应用“Spotify”克隆版。 项目介绍 这个开源项目不仅仅是一个学习资源,更是一个实践平台,让你在跟随教程的过程中,实现一个功能完善的音乐播放器应用...

gitblog_00042的博客 334

三星电视刷android,三星电视如何能够自由安装安卓应用呢

目前市面上电视系统分为7种,常见的是Android和iOS,使用前者的有小米电视、极米投影、当贝盒子等。另外5种分别为三星Tizen、Roku TV、Amazon Fire TV、LG WebOS以及Firefox OS(My Home Screen 2.0)。boP电视巴士_智能电视垂直媒体-tvbus.com.cnboP电视巴士_智能电视垂直媒体-tvbus.com.cn其中三星Tizen于2...

weixin_35130354的博客 1万+

Android App View——团结引擎车机版实现安卓应用原生嵌入 3D 开发场景

团结引擎 1.5.0 版本已于 4 月 14 日正式发布,从 1.5.0 版本开始,团结引擎车机版带来了一个激动人心的新能力 —— Android App View。现在,开发者可以将任意第三方安卓应用以 2D 组件或 3D 组件的形式,原生嵌入到 Tuanjie 开发的 3D 场景中,打造更具沉浸感与交互性的体验。

unityofficial的博客 959

Windows Subsystem for Android:解锁PC端安卓应用的无限可能

还在为手机应用无法在电脑上使用而烦恼吗?Windows Subsystem for Android(WSA)为Windows 11用户带来了革命性的跨平台体验。这个微软官方推出的Android子系统,让您可以在PC上直接运行Android应用,无需模拟器,享受原生般的流畅操作。 ## 为什么选择WSA而不是传统模拟器? 传统安卓模拟器往往占用大量系统资源,运行效率低下。而WSA采用了先进的容器

gitblog_00116的博客 879

安卓应用用户数据_Android手机用户注意,你要知道的中国十大安卓应用商店

现在这个时代,99%的人都拥有智能手机,所以应用程序商店变得越来越重要,因为我们需要通过应用商店来发现和下载各种App。在大陆地区,移动应用商店的情况与世界大多数国家略有不同。在美国等国家,只有两家占主导地位的应用程序商店:用于iOS设备(iPhone、iPad)的苹果App Store和用于android设备的Google Play。苹果App Store苹果针对大陆市场专门有一个中文版的App...

weixin_39639518的博客 3282

【小米App】使用Android Studio开发直接打开Flask Web应用的安卓应用

下面我将提供从零开始使用Android Studio开发一个直接打开Flask Web应用的安卓应用的完整指南,包括详细步骤和示例代码。

Flask Web 1079
上一篇: Android应用程序构成
下一篇: 安卓硬件访问服务
onnx
博客等级 码龄5年 1万+粉丝 416原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

onnx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值