如何基于Android手机制作一款手机防丢器什么牌子好

 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
基于android的手机安全管理软件的设计与实现毕业论文
下载积分:4800
内容提示:基于android的手机安全管理软件的设计与实现毕业论文
文档格式:DOC|
浏览次数:14|
上传日期: 03:16:31|
文档星级:
该用户还上传了这些文档
基于android的手机安全管理软件的设计与实现毕业论文
官方公共微信蓝牙防丢器
下载:大于5千次安装
风险应用为暂未得到乐商店认证的应用如果您想加快认证速度,请联系客服:
推荐下载方式:
(通过乐助手直接安装应用到手机)
其他下载方式:
如何使用二维码?
1.下载安装
2.打开二维码扫描软件
3.用摄像头对准二维码扫描
扫描二维码即可下载
蓝牙BLE防丢器,是一款采用蓝牙4.0BLE技术设计的防丢器。简单轻巧的设计,方便携带。功能:1,寻找(连接状态)在连接状态下,用户可以通过iphone轻松地找到防丢器,反之亦然。2,防丢当防丢器和iphone/ipad断开连接时,两边都会同时报警,可设定震动报警和铃声报警。3,定位当iphone/ipad和防丢器断开连接时,iphone/ipad会调用GPS记录下断开连接时的位置,方便寻找。4,遥控拍照功能(需固件支持)双击防丢器按钮,可打开APP拍照界面,再单击按键遥控拍照,在拍照界面双击按键可返回主界面。特别:-蓝牙低功耗单芯片技术-蓝牙低功耗外围角色兼容性:1,手机/平板需具备蓝牙LE技术;2,Android系统4.3或以上后使用快捷导航没有帐号?
三分钟看懂智能硬件原理——蓝牙防丢器制作教程(包括手机应用)(三)
查看: 533|
评论: 0|来自: .
摘要: 操作说明:该类用来实时搜索周边蓝牙设备,并把搜索结果保存在其静态成员变量mNameVector、mAddrVector、mRSSIVector中。此外这里还使用Handler用于向调用其搜索方法的Activity发送本次搜索完毕的消息。具体介绍如下 ...
操作说明:该类用来实时搜索周边蓝牙设备,并把搜索结果保存在其静态成员变量mNameVector、mAddrVector、mRSSIVector中。此外这里还使用Handler用于向调用其搜索方法的Activity发送本次搜索完毕的消息。具体介绍如下:l& 第27到42行为构造函数,主要负责成员变量初始化、注册filter、获取本地蓝牙设备;&l& 第44到65行为BroadcastReceiver,主要负责异步搜索周边蓝牙设备的广播的接收;&l& 第67到73行为开始搜索周边蓝牙设备函数;&l& 第75到83行为带有检查本地蓝牙是否开启并能够发出开启请求的搜索周边蓝牙设备函数;&l& 第85到91行为接收用户是否授权打开蓝牙设备的Activity的结果函数;&l& 第102到116行是一个线程类主要用于限定搜索周边蓝牙设备的最长时间(默认为12s左右);  正是因为加了独立用于限定搜索时长的线程,才让搜索过程的时间长短便于我们控制,但是sleep的时间也不要设置的过小,否则会出现一个蓝牙设备也搜索不到的情况。(建议最好参照第七部分——“安卓蓝牙编程主要操作”来理解本部分的代码)10)&& 修改UI_Main.java为: 1 package com.example.first_
3 import java.util.ArrayL
4 import android.app.A
5 import android.content.I
6 import android.os.B
7 import android.os.H
8 import android.os.M
9 import android.view.Su**ceH
10 import android.view.Su**ceHolder.C
11 import android.view.Su**ceV
12 import android.view.V
13 import android.view.View.OnClickL
14 import android.widget.B
16 public class UI_Main extends Activity implements Callback {
public Func_Draw mFuncD
public Su**ceHolder mH
public static Func_BT mFuncBT;
// 防丢设备
public static ArrayList&My_BTS& mBTSArrayList = new ArrayList&My_BTS&();
// 消息句柄(线程里无法进行界面更新,
// 所以要把消息从线程里发送出来在消息句柄里进行处理)
public Handler myHandler = new Handler() {
public void handleMessage(Message msg) {
if (msg.what == 0x01) {
Func_Draw.draw(mHolder);
mFuncBT.doDiscovery();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ui_main);
Func_Draw.initPaint();
Su**ceView mSu**ce = (Su**ceView) findViewById(R.id.su**ceView);
mHolder = mSu**ce.getHolder();
mHolder.addCallback(this);
mFuncBT = new Func_BT(this, myHandler);
Button mButton1 = (Button) findViewById(R.id.button_start);
mButton1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Func_Draw.times = 0;
mFuncBT.openBT();
Button mButton2 = (Button) findViewById(R.id.button_add);
mButton2.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
startActivity(new Intent(UI_Main.this, UI_List.class));
public void su**ceCreated(Su**ceHolder holder) {
// TODO Auto-generated method stub
public void su**ceChanged(Su**ceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
public void su**ceDestroyed(Su**ceHolder holder) {
// TODO Auto-generated method stub
85 }操作说明:上面第2步时我们修改了ui_main.xml并做出应用程序主页面的效果,而该类则是其对应的逻辑实现。nn& 首先看第37到65行的onCreate函数:l& 第39行设置要显示的页面为ui_main.xml所展示的效果;&l& 第41行调用Func_Draw的静态initPaint()方法对画笔进行初始化;&l& 第43到45行负责获取并设置Su**ceView;&l& 第47行实例化一个Func_BT;&l& 第49到56行是给开始防丢按钮绑定一个禁用词语器,一旦点击该按钮则执行onClick内代码;&l& 第58到65行是给添加蓝牙防丢器绑定一个禁用词语器,一旦点击则启动另一个Activity;nn& 第24到34行实例化一个Handler用于接收Func_BT一次搜索结束时发回结束的消息。在这里一旦收到本次周边蓝牙设备搜索结束的消息就调用Func_Draw.draw(mHolder)进行绘制,然后继续调用mFuncBT.doDiscovery()实现周期性搜索/防丢。nn& 第67到84行是自动生成的,暂且不用管(也不要删除!)。11)&& 新建一个UI_List.java文件,并修改代码为:
1 package com.example.first_
3 import java.util.ArrayL
4 import android.annotation.SuppressL
5 import android.app.A
6 import android.app.ProgressD
7 import android.content.I
8 import android.os.B
9 import android.os.H
10 import android.os.M
11 import android.util.L
12 import android.view.V
13 import android.view.View.OnClickL
14 import android.widget.ArrayA
15 import android.widget.B
16 import android.widget.ListV
18 public class UI_List extends Activity {
private ArrayList&String& I
private ListView myListV
private ArrayAdapter&String&
private boolean getDIV;
@SuppressLint("InlinedApi")
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ui_list);
UI_Main.mFuncBT.setFunc_BT(this, myHandler);
// 获取listview并设置为多选
myListView = (ListView) findViewById(R.id.listView1);
myListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
myListView.setTextFilterEnabled(true);
// 设置listview数组并绑定
Items = new ArrayList&String&();
aa = new ArrayAdapter&String&(this,
android.R.layout.**_list_item_checked, Items);
myListView.setAdapter(aa);
// 获取OK按钮,并遍历选择的设备,返回主Activity
Button myButton1 = (Button) findViewById(R.id.button_ok);
myButton1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
int num = 0;
for (int i = 0; i & myListView.getCount(); i++) {
if (myListView.isItemChecked(i)) {
String item = myListView.getItemAtPosition(i)
.toString();
String name = item.substring(0, item.indexOf("\n"));
String addr = item.substring(item.indexOf("\n") + 1);
Log.i("UI_LIST", name + " " + addr);
UI_Main.mBTSArrayList
.add(num++, new My_BTS(name, addr));
Intent mIntent = new Intent(UI_List.this, UI_Main.class);
mIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(mIntent);
// 获取Search按钮,设置禁用词语事件
Button myButton2 = (Button) findViewById(R.id.button_search);
myButton2.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
getDIV = false;
UI_Main.mFuncBT.openBT();
final ProgressDialog dialog = ProgressDialog.show(UI_List.this,
"搜索蓝牙设备", "稍等一下~", true);
new Thread(new Runnable() {
public void run() {
while (getDIV == false);
dialog.dismiss();
}).start();
// 消息句柄(线程里无法进行界面更新,
// 所以要把消息从线程里发送出来在消息句柄里进行处理)
public Handler myHandler = new Handler() {
public void handleMessage(Message msg) {
if (msg.what == 0x01) {
Items.clear();
for (int i = 0; i & UI_Main.mFuncBT.mNameVector.size(); i++) {
Items.add(i, UI_Main.mFuncBT.mNameVector.get(i) + '\n'
+ UI_Main.mFuncBT.mAddrVector.get(i));
aa.notifyDataSetChanged();// 通知数据变化
getDIV = true;
UI_Main.mFuncBT.mRSSIVector.clear();
UI_Main.mFuncBT.mNameVector.clear();
UI_Main.mFuncBT.mAddrVector.clear();
102 }操作说明:这个类和ui_list.xml也是配套的。因此:nn&&在onCreate中:l& 第28行设置要显示的页面为ui_list.xml所展示的效果;&l& 第30行负责将周边蓝牙搜索对象的Handler设置为本Activity内的Handler;&l& 第32到40行是list相关;&l& 第42到80行是两个按钮点击事件禁用词语相关;nn&&第85到101行的Handler则同UI_Main.java中的Handler类似负责接收周期性蓝牙搜索结束消息。在这里当接到蓝牙搜索结束的消息后是将搜索到的设备信息放入list中待用户选择。(没有再次调用蓝牙搜索)nn&&此外两个按钮禁用词语中执行部分要特别说明下:l& 当点击OK按钮时程序将用户在list中选择的设备的信息存放在UI_Main.mBTSArrayList中,然后结束当前Activity并启动UI_Main所对应的Activity。&l& 当点击search按钮时会启动周边蓝牙设备搜索并打开一个等待对话框,其中的Thread负责等待直到搜索完毕。12)&&&最后(如图8-5)找到AndroidMainFest.xml文件修改为:&            图 8-5 AnDroidManifest.xml文件 1 &?xml version="1.0" encoding="utf-8"?&
2 &manifest xmlns:android="/apk/res/android"
package="com.example.first_test"
android:versionCode="1"
android:versionName="1.0" &
android:minSdkVersion="8"
android:targetSdkVersion="19" /&
&uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /&
&uses-permission android:name<span style="margin: 0 padding: 0 line-height: 1.5; color: rgb
上一篇:下一篇:}

我要回帖

更多关于 android 蓝牙防丢器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信