Android-APP之桌面宠物

news/2024/11/25 7:29:30/

Android-APP之桌面宠物

源码:https://github.com/benxhinGH/Desktopet.git

       本是需要研究android-app漏洞挖掘,那前提就是要先了解android-app的内部原理。于是开始上手学习android-app,借机参加了腾讯提供的android移动开发课程。

       这个app主要是实现一个桌面宠物,同时可以提供多项功能:接受微信消息;闹钟功能;蓝牙配对;宠物属性设置等。其中我主要负责两个部分,一个是软件开始之前的设计工作;另一个是详细的设计蓝牙配对功能。

       前期设计工作基本不做详细描述,主要是按照要求,并加上我自己的想法搭建起一个具体框架,具体的实现是由队友负责。

       蓝牙配对功能是我实现的,操作方式是,当用户点击宠物的蓝牙配对功能时,就会根据提示打开蓝牙并且主动搜索其他的蓝牙设备,两个设备的宠物就可以进行通信;除此之外,计划的蓝牙配对还包含可以在一个界面内显示配对成功后对方的宠物。就像qq里边的厘米秀功能一样;我们可以利用java的多态特性,使得不同的宠物拥有相同的动作;我们就可以发送动作。

       在这个过程中遇到的问题主要有:

A.     android-app中蓝牙通信的原理

B.     蓝牙协议实现过程的代码完备性

C.     如何处理socket接口以及各个组件返回的信息

D.    句柄对各种返回信息的处理

E.     Activity,Service,BroadcastReceiver等四大组件的生命周期(此功能中主要用到的是前三个)

F.     如何实现调用宠物对象到自己的容器内(暂未解决)

 

-----------------------------------------------------------------------------

 

此过程中的开发学习了git,可以使用git+github实现协作开发

 

-----------------------------------------------------------------------------

 

1.首先需要蓝牙权限&&设置蓝牙可见性:

l  允许程序打开蓝牙设备;并且连接到已配对设备

l  允许程序发现和配对蓝牙设备

l  其中遇到的疑惑:安全连接与不安全连接的区别

2.BluetootAdapter

l  本地蓝牙适配器;可执行基本的蓝牙任务;如:

l  启动蓝牙设备;查询已配对的设备列表;使用已知的MAC地址实例化一个BluetoothDevice类;创建一个BluetoothServerSocket建立来自其他设备的连接请求

l  获取蓝牙适配器getDefaultAdapter();开启蓝牙(Intentin activity+startActivityForResult);获取本地蓝牙信息(bluetoothAdapter.getAddres);搜索蓝牙设备,此过程为异步的,需要注册一个广播接收者,监听是否搜到设备(bluetoothAdapter.startDiscovery);监听扫描结果(通过广播接收者onReceive查看扫描到的蓝牙设备,每扫描到一个设备,系统都会发送此广播BluetoothDevice.ACTION_FOUND);停止搜索(bluetoothAdapter.cancelDiscovery)

 

3.SDP协议通信

l  服务器端:

a)     通过SDP协议建立链接进行通信;类似于平常使用的socket

b)     创建BluetoothServerSocket

c)     安全RFCOMM Bluetooth socket:连接时需要配对

d)     不安全RFCOMM Bluetooth socket:连接时不需要配对

e)     AcceptThread创建侦听线程accept阻塞;另一线程.close(),终止该阻塞;侦听到连接后连接;这里需要注意状态的的异常判断

l  客户端:

a)     RFCOMM socket,并连接服务端。

b)     先扫描周围的蓝牙设备,如果扫描到指定设备则进行连接

c)     ConnectThread

l  数据传输:

a)     ConnectedThread

b)     发送数据

c)     接收数据

 

-------------------------------------------------------------------------

消息处理:分为两类:各个组件之间的消息传递+蓝牙配对之后两个设备之间的消息传递

 

第一部分的组件之间的消息传递主要使用的是各个组件内部的接口函数;比如activity的startActivityForResult函数;onReceive等

第二部分的两个设备连接之后通过蓝牙进行传递的主要是利用消息句柄;这里的消息句柄不仅处理蓝牙通信过程中的数据;还会处理蓝牙连接和配对过程中的蓝牙状态/控制信息。这些需要非常严谨的逻辑,并且处理整个流程可能会出现的异常。这部分借鉴了google的sample,不得不说高级工程师的代码还是很牛的。

 

--------------------------------------------------------------------------

Activity : 不同的启用模式对应任务栈的改变情况;比如Standard、SingleTop、SingleTask..

              生命周期:onCreate() onStart() onStop() 。

Service: 1.Service不是一个单独的进程,它和它的应用程序在同一个进程中

2.Service不是一个线程,这样就意味着我们应该避免在Service中进行耗时操作

onCreate()、onStart()或者说是onStartCommand();onDestroy()

Broadcast: 所有广播会一起收到广播;广播不可以被截断同时也不可以对传输的数据进行修改

contentProvider: ContentProvider 实例通过处理来自其他应用的请求来管理对结构化数据集的访问。所有形式的访问最终都会调用 ContentResolver,后者接着调用ContentProvider的具体方法来获取访问权限。

Intent:     协助应用间的交互与通讯;Intent负责对应用一次操作的动作、动作设涉及数据、附加数据进行描述,Android则根据此Intent描述,找到对应组件,将Intent传递给调用的组件,并完成组件调用。

      

 

 

 

 

 

 

 

 

 

 

 


http://www.ppmy.cn/news/551411.html

相关文章

python桌面宠物模块_利用python写个桌面挂件 | 手把手带大家做只桌面宠物呗

导语 前段时间有小伙伴留言说想让我带大家写写桌面小挂件,今天就满足一下留过类似言的小伙伴的请求呗~不过感觉写桌面的挂历啥的没意思,就简单带大家做一只桌面宠物吧~ 废话不多说,让我们愉快地开始吧~ 开发工具Python版本:3.6.4 …

用JavaScript写一个可以聊天的桌面宠物

好的,我们可以用 JavaScript 写一个聊天桌面宠物。首先,我们需要使用 JavaScript 的 GUI 库,比如 Electron 或 NW.js 来创建一个桌面应用程序。然后,我们可以使用文本输入框和文本框来构建聊天界面。我们可以使用 JavaScript 来处理用户输入,并使用语言处理库来解析用户的…

STM32实现延时

在STM32单片机中,实现延时一般都是使用定时器,既可以使用Systick定时器,也可以使用常规的定时器。 定时器在设置了定时并开启之后,就会进入自主运行模式,其中,初始化设置这一阶段是由CPU执行相应指令完成的…

linux桌面宠物

环境: ubuntu19.10 xfce4 步骤如下: python getpet.py(获取宠物动作图片) 然后会弹出来一个对话框,对话框里面你看中哪个宠物就用鼠标双击一下,然后终端就会开始下载这个宠物的图片 python start.py(启动桌面宠物) 小技巧: …

用QT实现一个简单的桌面宠物

有时候桌面空空的,或者屏幕空旷了,我们就可以找一点东西来点缀一下,那么桌面宠物是一个不错的选择。 作为一个程序猿,如何实现一个桌面宠物呢? 本文就给大家带来的是如何用qt提供一种思路并写一个简单的桌面宠物。 思…

桌面小宠物项目开发_C# 桌面宠物 示例源码(透明窗体)

【实例简介】 可以按时叫你吃饭可以控制在桌面上行走等等等等。。。。。。。。。。。。 【实例截图】 【核心代码】 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using Syste…

java 创建桌面宠物

QQ宠物终于因为玩家稀少而挂掉了, 但是想一想还有点怀念(其实早就弃了) 再加上追了近三年, 数码宝贝tri 也算就此完结了, 再一次勾起了童年, 以及.....我为毛不能自己养数码宝贝呢(手动滑稽) 由于大学狗(天天在宿舍打游戏的那种)一枚, 所以本宅也就只会一点java Swing ,也就只…

使用unity实现桌面宠物

使用unity做出来的安装程序都是有边框以及背景的,而且要想点击其他窗口就不得不切换窗口,然后最近因为突发奇想,想要个桌面宠物来解解闷,便上网搜了些文章 https://blog.csdn.net/q493201681/article/details/65936592 再结合自…