让你的Android应用与外部元素互动起来

安卓平台白日梦应用开发教程 随着移动应用市场的持续发展,用户对移动应用的期待日益增长,不仅要求应用具备强大的功能性,同时对用户体验提出了更高的要求。在这样的背景下,Android白日梦功能应运而生,它是一种创新的用户体验形式,旨在通过系统级服务实现应用内容的丰富展示,甚至在用户未直接与应用互动时也能持续运行。本章将对Android白日梦功能进行简要介绍,探索其如何为用户提供连续、无缝的体验,并为后续章节探讨其实现机制和设计策略打下基础。 阅读详情

传送门 ☞ 轮子的专栏 ☞ 转载请注明 ☞ http://blog.youkuaiyun.com/leverage_1229

        一个Android应用程序通常有几个activities。每个act显示一个用户接口允许用户执行一个指定的任务。用户从一个act到另一个act,你的App必须使用一个Intent对象来定义你App想做些什么事。当你通过一个Intent调用startActivity()方法时,系统会使用Intent来鉴定和启动合适的App组件。一个Intent可以明确的启动一个特定的组件(如一个特定的act实例)或隐式启动任何可以处理预定动作的组件,本章我们将讲述怎么使用Intent来执行与其他Apps的一些交互,例如启动另一个App,从那个App接收结果。并使你的应用程序能够响应来自其他App的intents。

1发送用户到另一个App

        Android最重要的一个特性之一就是发送用户到另一个App并基于“动作”来执行它的能力。例如,如果你的app有商业地址想要显示在地图上,你不得不在你的App中新建一个activity来显示地图。其实更好的办法是使用Intent发送一个查看地图的外部请求。Android系统会启动那个能查看地址的App。通常,我们使用一个明确的Intent,它定义的明确的类名。然而,当你想有一个单独的应用程序执行时,如“查看地图”,你必须使用一个隐式的Intent。本节讲述如何为一个特定的动作创建隐含的意图,以及怎样用它来启动执行另一个应用程序中的Activity。

1.1构建一个隐式的Intent

        隐式intents不用申明启动组件的类名,但需要申明执行的动作。动作指定你想要做的事情,如view(查看),edit(编辑),send(发送)或获得某事物。Intents经常包托一些与动作相关联的税局,如你想要查看的地址,或者你想要发送的email信息。这取决于你想要创建的Intent所发送的数据,数据可能是一个Uri或intent根本不需要数据也能发送。
使用Uri数据拨打电话:
Uri number = Uri.parse("tel:5551234");
Intent callIntent = new Intent(Intent.ACTION_DIAL, number);
        当你的app通过startActivity()调用intent时,电话app根据给定的电话号码发起呼叫。
查看一个地图:
// 基于地址的地图点
Uri location = Uri.parse("geo:0,0?q=1600+Amphitheatre+Parkway,+Mountain+View,+California");
// 或基于经纬度的地图点
// Uri location = Uri.parse("geo:37.422219,-122.08364?z=14"); // z参数表示缩放级别
Intent mapIntent = new Intent(Intent.ACTION_VIEW, location);
查看一个web页面:
Uri webpage = Uri.parse("http://www.android.com");
Intent webIntent = new Intent(Intent.ACTION_VIEW, webpage);
        其他种类的隐式intents需要”extra”数据来提供不同的数据类型,如一个字符串。你能使用putExtra()方法来添加一个或更多extra 数据。默认的,系统通过基于Uri的intent来确定适当的MIME(Multipurpose Internet Mail Extensions)类型。如果你在intent中不包含一个Uri,你应该使用setType()来指定intent相关联的数据类型。设置MIME类型来进一步指定activities将要接收的intent类型。
发送带有附件的电子邮件:
Intent emailIntent = new Intent(Intent.ACTION_SEND);
//没有Uri的intent,所以需要声明”text/plain”的MIME类型
emailIntent.setType(HTTP.PLAIN_TEXT_TYPE);
emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {"jon@example.com"}); // 收件人
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Email subject");
emailIntent.putExtra(Intent.EXTRA_TEXT, "Email message text");
emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("content://path/to/email/attachment"));
创建一个日历事件:
Intent calendarIntent = new Intent(Intent.ACTION_INSERT, Events.CONTENT_URI);
Calendar beginTime = Calendar.getInstance().set(2012, 0, 19, 7, 30);
Calendar endTime = Calendar.getInstance().set(2012, 0, 19, 10, 30);
calendarIntent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, beginTime.getTimeInMillis());
calendarIntent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime.getTimeInMillis());
calendarIntent.putExtra(Events.TITLE, "Ninja class");
calendarIntent.putExtra(Events.EVENT_LOCATION, "Secret dojo");
注意: 对于日历事件的intent只在API Level或更高版本下才支持。

1.2验证一个App接收的Intent

        我们总是应该在调用一个intent之前先包含一个验证。这是一个好的习惯,因为如果你在app中调用intent后,如果没有可用的设备,那么你的app会崩溃.为了验证那个activity可用,我们可以调用queryIntentActivities()来获得一个list,如果返回的List不为空,那么你能安全的使用intent。
PackageManager packageManager = getPackageManager();
List<ResolveInfo> activities = packageManager.queryIntentActivities(intent, 0);
boolean isIntentSafe = activities.size() > 0;
        如isIntentSafe为true,那么表示至少有一个app能响应我们的intent。如果false,表示没有一个app能处理这个intent。

1.3使用Intent启动一个Activity

        你可以创建intent并设置extra的信息,然后调用startActivity()。如果系统识别有多个activity能处理这个intent,那么它会显示一个对话框让你自主选择。如果只有一个activity的话,系统会立即启动这个activity。
        让我们看看如下的代码,看它是怎么启动activity的:
// 构建intent
Uri location = Uri.parse("geo:0,0?q=1600+Amphitheatre+Parkway,+Mountain+View,+California");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, location);
// 验证上面的mapIntent
PackageManager packageManager = getPackageManager();
List<ResolveInfo> activities = packageManager.queryIntentActivities(mapIntent, 0);
boolean isIntentSafe = activities.size() > 0;
// 如果它是安全的就启动这个activity
if (isIntentSafe) {
    startActivity(mapIntent);
}

1.4显示APP选择器

        注意当你通过intent使用startActivity()启动activity时,如果有多个app响应,如果多个应用可以处理我们的操作,并且用户可能想要每次启动不同的app,比如一个”分享”的动作,分享的渠道可能有多个app组成,这样用户每次可能使用不同的app。那么我们可以使用createChooser()来创建显示选择器。
Intent intent = new Intent(Intent.ACTION_SEND);
...
// 用于标题的文本资源例如"Share this photo with"
String title = getResources().getText(R.string.chooser_title);
// 创建并启动chooser
Intent chooser = Intent.createChooser(intent, title);
startActivity(chooser);

2从Activity获得结果

        启动另一个activity并不一定是单向的。我们还可以启动另一个activity,并接收返回结果.。如果需要接收返回结果,我们可以使用startActivityForResult()。L例如。你的应用启动一个摄像机app并接收拍摄照片的结果。当然,获得响应的activity必须被设计为返回一个结果,当它这么做时,它发送一个intent对象的结果。你的activity在onActivityResult()回调方法中会接收到这个intent。虽然我们可以使用明确的和隐式的intent,但这里实际建议你应该使用一个明确的intent,以确保收到了预期的结果。

2.1启动Activity

        使用startActivityForResult()方法,需要传递一个额外的int参数。Int参数的意思为”request code”,就是标识一个请求。当收到intent结果时,回调提供了相同的请求的代码,使应用程序可以正确识别结果,并决定如何处理它。
如何启动一个activity并允许用户选择一个联系人:
static final int PICK_CONTACT_REQUEST = 1;  // request code
...
private void pickContact() {
    Intent pickContactIntent = new Intent(Intent.ACTION_PICK, new Uri("content://contacts"));
    pickContactIntent.setType(Phone.CONTENT_TYPE); 
    startActivityForResult(pickContactIntent, PICK_CONTACT_REQUEST);
}

2.2接收一个结果

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // 检查响应的请求
    if (requestCode == PICK_CONTACT_REQUEST) {
        // 确保请求是成功的
        if (resultCode == RESULT_OK) {
            // Do something...
        }
    }
}
        为了成功地处理结果,你必须明白,intent结果的格式将是什么。例如,People app(早些版本叫Contacts app)始终用content URI返回结果并识别被选择的联系人,Camera app在返回一个Bitmap。
将上面的代码扩展一下,让我们看下怎样读取联系人数据:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    //检查响应的请求
    if (requestCode == PICK_CONTACT_REQUEST) {
        //确保请求是成功的
        if (resultCode == RESULT_OK) {
            // 获得指向选定联系人的URI
            Uri contactUri = data.getData();
            //我们只需要号码(NUMBER)列 
            String[] projection = {Phone.NUMBER};
 
            // 在联系人中执行查询,获得NUMBER column
            // 我们不需要挑选或排序
            // 提示:  query()方法应该在单独的线程执行,避免阻塞UI线程
            // 考虑使用CursorLoader 执行查询
            Cursor cursor = getContentResolver()
                    .query(contactUri, projection, null, null, null);
            cursor.moveToFirst();
 
            // 从NUMBER column中检索电话号码
            int column = cursor.getColumnIndex(Phone.NUMBER);
            String number = cursor.getString(column);
 
            // 使用电话号码做些事情
        }
    }
}
注意:Android 2.3 (API level 9)以前,在Contacts Provider执行一个查询需要申明READ_CONTACTS权限,虽然在2.3开始有一个临时的权限可以让你去读取Contacts Provider,但依旧不能查询。所以不管什么版本我们都申明READ_CONTACTS权限即可。

3允许其他Apps启动你的Activity

        在android平台上,如果你要集成facebook的社交功能,那么你可以使用facebokk提供的一个apk,里面集成了facebook的众多功能,如分享信息照片等。在实际开发过程中,可能我们需要开发这样的一个类似的apk,别担心,android提供这样的功能并且很容易实现。

3.1添加一个Intent Filter

        我们需要正确的定义intents,让activity能更好的处理。每一个intent filter应该添加具体的action类型和数据类型。系统可能会发送一个给定的intent到一个activity,如果activity有一个intent filter并符合下列条件的intent对象:
Action
        一个用来执行动作的字符串名字。例如ACTION_SEND或ACTION_VIEW。在intent filter中的<action>节点指定它。必须是全称,不能使用API常量。
Data
        相关的intent中数据的描述。在intent filter中的<data>节点指定它。在这个节点中使用一个或多个属性,你能指定MIME类型,一个URI前缀,一个URI组合,或者是以上内容的组合。如果你不需要申明指定的Uri数据,那你仅指定 android:mimeType属性即可,例如text/plain或image/jpeg。
Category
        提供一种额外的方法来表示activity处理的intent,通常与用户手势和开始位置相关。系统支持几种不同的类别,但大部分都很少使用,一般在intent filter中的<category>节点使用CATEGORY_DEFAULT。
下面的<intent-filter>中定义的内容表示在处理ACTION_SEND的intent中使用的数据类型为文本或图像。
<activity android:name="ShareActivity">
    <intent-filter>
        <action android:name="android.intent.action.SEND"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:mimeType="text/plain"/>
        <data android:mimeType="image/*"/>
    </intent-filter>
</activity>
        每一个传入的intent只有一个动作和一种数据类型,但声明多个<data>,<action>,<category>也是OK的,如果动作和数据类型相互排斥的话,你就应该分开它们。加入你的activity处理文本和图像,并且使用ACTION_SEND和ACTION_SENDTO intents。这样就是错误的,在这种情况下你应该使用两个<intent-filter>来分开它们。因为SENDTO必须使用Uri数据,并且需要sms和smsto的scheme。
<activity android:name="ShareActivity">
    <!—为发送文本过滤; 接收SENDTO action 使用 sms URI schemes -->
    <intent-filter>
        <action android:name="android.intent.action.SENDTO"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:scheme="sms" />
        <data android:scheme="smsto" />
    </intent-filter>
    <!—为发送文本或图像过滤; 接收SEND action和文本或者图像数据 -->
    <intent-filter>
        <action android:name="android.intent.action.SEND"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:mimeType="image/*"/>
        <data android:mimeType="text/plain"/>
    </intent-filter>
</activity>
        为了接收隐式的intents,我们必须在<intent-filter>中定义CATEGORY_DEFAULT中,如果没声明,那么你的activity不能解决处理隐式的intents。

3.2 在Activity中处理intent

        为了决定在你activity中想要处理的动作,你能在启动activity时读取intent。在启动activity时,调用getIntent()方法来检索启动activity的intent。你能在任意时刻这么做,但最好在onCreate()或onStart()中这样做。
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    //获得启动activity的intent
    Intent intent = getIntent();
    Uri data = intent.getData();
 
    // 解决intent类型想做什么
    if (intent.getType().indexOf("image/") != -1) {
        //处理图像数据
    } else if (intent.getType().equals("text/plain")) {
        // 处理文本
    }
}

3.3 返回一个结果

        如果你想要返回一个结果到你调用的activity,最简单的就是调用setResult()方法来指定结果代码和intent结果。当你的操作完成时,用户如果想要返回到最开始的activity,调用finish()来关闭和destroy你的activity即可。
// 创建intent来传递某种结果数据
Intent result = new Intent("com.example.RESULT_ACTION", Uri.parse("content://result_uri");
setResult(Activity.RESULT_OK, result);
finish();
        我们可以只指定result code。通常是RESULT_OK或RESULT_CANCELED。你可以添加额外的intent或者不添加。默认的result code是RESULT_CANCELED。所以如果用户在你设置result之前执行Back键,那么最初的activity收到的就是RESULT_CANCELED,这并不是我们预计的结果,这个细节请注意。
android APP元素捕捉工具 uiautomatorviewer 添加xpath属性,三种方法 如: xpath : //android.widget.Button[@resource-id=\"com.android.huayi:id/btn_download_update_dialog\"] uiseletor:new UiSelector().className(\"android.widget.Button\").textContains(\"下载安装\").resourceId(\"com.android.huayi:id/btn_download_update_dialog\") 立即下载

相关推荐

OpenCV透视变换原理与实战:从单应性矩阵到文档矫正

透视变换是计算机视觉中实现平面图像几何校正的基础技术,其核心在于利用单应性矩阵(Homography)建模三维空间到二维图像的射影关系。不同于仿射变换的线性约束,透视变换通过有理函数映射支持任意凸四边形间的非线性变形,天然适配真实场景中的远小近大、平行线汇聚等透视现象。该技术具备确定性强、计算高效、无需训练数据等工程优势,广泛应用于文档扫描矫正、车牌识别预处理、AR贴图对齐及无人机正射影像生成等场景。结合OpenCV的cv2.findHomography与cv2.warpPerspective接口,开发者可

weixin_30873847的博客 654

Appcan开发之页面布局与CSS排版

在Appcan开发中,首先要进行的就是页面布局,然后在这个页面上填充数据,加上互动元素,最终构成完整的应用。     因为appcan是使用HTML5+CSS3+JavaScript技术来进行开发,所以与普通web开发基本没有区别,理解成webapp的开发或许更好解释。     iOS、Android系统中已经内置webkit内核,而appcan正是利用webkit来运行我们编写的页面

KylinBL的专栏 8395

【电子电力】IEEE33节点系统参数及拓扑图visio

IEEE33节点系统是一种广泛用于电力系统分析和研究的标准配电网络。该系统具有典型的辐射结构,适用于负载流分析、分布式发电优化及电力系统的可靠性评估。本报告主要基于IEEE33节点系统的拓扑图,讨论其在电子电力系统中的应用。通过MATLAB仿真分析了节点的电压分布、功率损耗等关键参数,并验证了系统的稳定性和有效性。

2401_84610415的博客 1万+

移动端app和H5混合开发交互

在开发过程中,有时会需要使用一些H5页面,不管是APP本地集成,还是跳转到指定线上地址,双方之间的交互是难免遇到的,这里我总结一下我的方式,如有问题请指出 h5页面js调用app的方法: 1,methods是需要调用的方法名称;请与APP开发者协商好。 2,mobile是安卓APP开发者定义的对象名,请不要忘记问一下他(她)定义的啥名字哦 注意:调用苹果端的方法时要传一个参数(随便啥子)过去,才能调用成功,不知道为啥,反正我这里是这样; app调用h5页面的方法.....

qq_45580353的博客 1809

ue4 classuobject没有成员beginplay_【教程】UE4 C++实现简单的AI及遇到的坑

后续文章更新移步→微信公众号“虚幻社区”(mantra-xhsq),您的支持是我创作的动力。我们这篇文章的宗旨是用代码实现简单的AI,有多简单,只是搭建一个具有PawnSensing组件和回调的AI。重点也不是做一个AI,而是了解一下C++代码如何搭建最基本的AI(关于蓝图如何创建请自行百度)。如果英语还不错的话,可以移步 参考链接,链接中的内容除了创建基本的PawnSensing组件还有关于行为...

weixin_39929918的博客 1127

数字IC设计(8)之AHB-Lite总线(持续更新)

AHB总线全称Advanced High-performance Bus,意为先进高性能总线。推出该总线的目的是补充APB总线在性能上的不足,APB总线适合挂载低速外设,所以AHB总线用来挂载高性能的外设,这样子可以分工合作,节约资源。AHB总线可以实现多主多从的连接,此时需要设计仲裁机和matrix(矩阵),AHB-Lite一般用于一主多从,此时则不需要仲裁机和matrix,但是也可以用AHB-Lite来实现多主多从,就是设计多个layer,每个layer是一主多从,再把各个layer连起来;

qq_69440734的博客 2255

一键铺货跨境商城--APP+H5+小程序

总结来说,一键铺货跨境商城的多渠道布局(APP+H5+小程序)为商家提供了更广阔的市场空间和用户基础。因此,商家需要综合考虑自身资源和市场需求,制定合适的战略并持续优化运营策略,以在竞争激烈的电商市场中脱颖而出。在当今全球化的电商市场中,一键铺货跨境商城已成为一种高效、便捷的商业模式。通过APP、H5和小程序的多渠道布局,商家能够迅速拓展市场,提升品牌影响力,满足不同消费者的购物需求。小程序是一种无需下载安装即可使用的应用,具有便捷、高效的特点。一键铺货跨境商城:APP+H5+小程序的全方位布局。

chend8966的博客 550

OpenPose 论文理解

OpenPose: Real-time multi-person keypoint detection library for body, face, hands, and foot estimation paper: Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields link: OpenPose paper...

JustForYou的博客 2万+

Android应用与外部元素互动

一个Android应用程序通常有几个activities。每个act显示一个用户接口允许用户执行一个指定的任务。用户从一个act到另一个act,你的App必须使用一个Intent对象来定义你App想做些什么事。当你通过一个Intent调用startActivity()方法时,系统会使用Intent来鉴定和启动合适的App组件。一个Intent可以明确的启动一个特定的组件(如一个特定的act实例)或

loveliu030107的专栏 709

3 路由引入

在大型企业网络中,网络规模十分庞大,选用单一的路由协议无法满足网络的需求,因此多种路由协议共存的情况十分常见。或者出于业务逻辑或行政管理的考虑,会在不同的网络结构中设计和部署不同的路由协议,使路由的层次结构更加清晰可控。路由引入是具有方向性的,将路由信息从路由协议A引入到路由协议B(A-to-B),则路由协议B可获知A中的路由信息,但是此时,A还并不知晓B路由协议中的路由信息,除非配置B-to-A的路由引入。表3-1:各种路由协议的优先级。通过路由引入,可以实现路由信息在不同路由协议间传递。

lwljh134的博客 621

沁恒CH32V30X学习笔记02--GPIO的使用教程及2次封装驱动

刚复位后,GPIO 口运行在初始状态,这时大多数 IO 口都是运行在状态所有的 GPIO 口都可以被配置外部中断输入通道,但一个外部中断输入通道最多只能映射到一个GPIO 引脚上,且外部中断通道的序号必须和 GPIO 端口的位号一致,,两方都是一对一的关系。复用功能。

Car12 706

android 应用置顶到最前端_[置顶] 让你的Android应用与外部元素互动起来

一个Android应用程序通常有几个activities。每个act显示一个用户接口允许用户执行一个指定的任务。用户从一个act到另一个act,你的App必须使用一个Intent对象来定义你App想做些什么事。当你通过一个Intent调用startActivity()方法时,系统会使用Intent来鉴定和启动合适的App组件。一个Intent可以明确的启动一个特定的组件(如一个特定的act实例)或...

weixin_39649736的博客 1500

uniapp(全端兼容)-最新详细实现接入腾讯云IM即时通讯教程,uniapp在安卓苹果app端/小程序/h5移动端等集成使用腾讯云im插件,提供消息列表与聊天对话示例,支持发图片/私聊/实时监听消息

uni-app,腾讯云IM,安卓app,苹果app,微信小程序,移动端,H5网页,手机网站,微信小程序、支付宝小程序,手机app端,nvue,im即时通讯,腾讯云IM详细教程,如何接入腾讯IM即时通讯,使用腾讯im有没有插件,怎么使用腾讯云IM插件,tim-wx-sdk,聊天sdk,即时通讯im uniapp私聊/群聊/聊天室,实现IM即时通讯仿微信聊天功能,对接腾讯云IM+音视频,调用腾讯即时通信IM的示例,卡顿很卡不流畅,音视频,全局监听,仿微信IM,uni-huanxin-im,sdk,实现多端实时通

✅ 精选推荐文章 1万+

libreoffice android,LibreOffice Viewer

LibreOffice Viewer:世界上最流行的开源办公应用LibreOffice最新推出的安卓版,LibreOffice是一个非常强大的办公工具。官方介绍LibreOffice是世界上最流行的开源办公应用 - 现在它已登陆安卓。这个应用处于活跃开发阶段,但目前尚未稳定。我们期待用户反馈以及Bug汇报。目前,请不要将本应用用于严肃任务用途 - 它可能不会像你期待的那样工作!支持格式:- 开源文...

weixin_27960253的博客 610

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

最新安卓版本对照表,API对照表(持续更新,更新到安卓17)

话不多说,直接上表,持续更新(更新到安卓16)。 列出了所有记录的可能会影响应用开发者的功能和行为变更。请使用此列表查找影响您的变更,然后点击相应的链接以阅读文档。下表列出了所有记录的可能会影响应用开发者的功能和行为变更。请使用此列表查找影响您的变更,然后点击相应的链接以阅读文档。Java 和 OpenJDK 是 Oracle 及/或其关联公司的商标或注册商标。

雨季余静的博客 9万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

【亲测免费】 XDA-One 安卓论坛浏览应用指南

XDA-One 安卓论坛浏览应用指南 1. 项目介绍 XDA-One 是一个专为安卓设备设计的原生应用程序,旨在提供便捷的方式来浏览 XDA Developers 论坛。这款应用开放源代码,基于 GPL-3.0 许可证发布,允许社区成员参与贡献,共同构建更好的论坛体验。它由一群热情的开发者维护,支持多语言,并且拥抱外部贡献者的“叉取&拉取”开发模式。 2. 快速启动 环境准备 确保您已安装...

gitblog_00780的博客 2931

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Android活动之间的互动,生命周期

Android 各个活动之间的通信以及互动主要是通过Intent来进行互动交互,而Intent主要就是有两种方法,显示的Intent和隐式的Intent对于显示的IntentIntent intent = new Intent(FistActivity.this,SecondActivity.class); startActivity(intent);这部分代码可以插入在触发时间中,这样子的话,当...

Tang_DH的博客 353

基于安卓的健身记录APP系统java+springboot的项目

这款基于 Java 和 Spring Boot 的安卓健身记录 APP 系统,为用户提供了全面的健身管理服务。 在功能方面,它具备运动数据记录功能,可精准记录用户的运动轨迹、步数、运动时长、消耗的卡路里等。用户能根据自身需求制定个性化的健身计划,设定目标,如每周运动次数、减肥目标等。APP 还提供丰富的健身课程资源,包括有氧训练、力量训练、瑜伽等各类视频教程,方便用户随时学习和跟练。同时,设有社交互动功能,用户可以分享自己的健身成果、心得,与其他健身爱好者交流互动,互相鼓励。 从技术实现角度看,Java 语

全网粉丝10W+、全栈领域优质创作者、掘金、阿里云等社区博客专家、专注于全栈领域和毕业项目实战 919

计算机毕业设计之基于Android的教学互动系统

教学互动系统;SpringBoot框架;Android技术;

wx_zhuyanbishe的博客 1608

基于Android的牵伴(老人与子女互动)APP设计与开发

本文介绍了一款名为"牵伴"的亲情互动系统设计方案。系统分为父母版、子女版和管理员版三个版本:父母版主要提供账户管理、亲情互动和收听电台功能;子女版包含账户管理、亲情互动、GPS定位、论坛、推文等6大模块;管理员版则负责用户管理、内容推送等后台功能。系统采用分层架构设计,提供了详细的模块划分、界面原型和接口设计,并实现了语音聊天、地图定位、论坛互动等核心功能。技术实现上采用Android平台开发,通过ImageLoader进行图片加载优化,同时整合了百度地图等第三方接口服务。

毕业作品网站 1668

探索多屏互动新境界:react-native-external-display

探索多屏互动新境界:react-native-external-display 在当今数字化时代,多屏互动已成为提升用户体验的关键因素。无论是家庭娱乐、商务演示还是教育培训,多屏显示都能带来更加沉浸和高效的体验。今天,我们将向您推荐一款强大的开源项目——react-native-external-display,它能够帮助您轻松实现React Native应用在多屏环境下的无缝渲染。 项目介绍 r...

gitblog_01125的博客 954

探秘Android外部NFC服务:Native风格实现的神器库

探秘Android外部NFC服务:Native风格实现的神器库 在移动支付和物联网应用日益普及的时代,NFC(近场通信)已经成为设备间数据交换的重要手段。对于Android开发者来说,有效地管理和利用外部NFC阅读器显得至关重要。让我们一起深入了解这个名为"External NFC Service (native style) for Android"的开源项目,看看它如何简化...

gitblog_00035的博客 872

Unity安卓局域网文件传输解决方案:让文件传输更简单、更快捷

Unity安卓局域网文件传输解决方案:让文件传输更简单、更快捷 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在当今快节奏的工作与生活环境中,文件传输的需求无处不在。尤其是在移动设备上,如何实现高效、便捷的文件传输成为开发者亟待解决的问题。Unity安卓局域网文件传输解决方案正是针对这一需求,为开发者提供了一个简单、实用的解决方案。 项目技术分析 本项目基于Unity...

gitblog_06757的博客 455
上一篇: 360°全景影像移动端类库--PanoramaGL
下一篇: 360°全景影像数据流图和代码走读
innovation
博客等级 码龄14年 251粉丝 136原创
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值