搜档网
当前位置:搜档网 › Android BLE与终端通信(五)——Google API BLE4.0低功耗蓝牙文档解读之案例初探

Android BLE与终端通信(五)——Google API BLE4.0低功耗蓝牙文档解读之案例初探

Android BLE与终端通信(五)——Google API BLE4.0低功耗蓝牙文档解读之案例初探
Android BLE与终端通信(五)——Google API BLE4.0低功耗蓝牙文档解读之案例初探

Android BLE与终端通信(五)——Google API BLE4.0低功耗蓝牙文档解

读之案例初探

一.概述

我们直接翻译

Generic Attribute Profile(GATT)—GATT配置文件是一个通用规范,用于在BLE链路上发送和接收被称为“属性”的数据块。目前所有的BLE应用都基于GATT。蓝牙SIG规定了许多低功耗设备的配置文件。配置文件是设备如何在特定的应用程序中工作的规格说明。注意一个设备可以实现多个配置文件。例如,一个设备可能包括心率监测仪和电量检测。

Attribute Protocol(ATT)—GATT在A TT协议基础上建立,也被称为GATT/ATT。ATT对在BLE设备上运行进行了优化,为此,它使用了尽可能少的字节。每个属性通过一个唯一的的统一标识符(UUID)来标识,每个String类型UUID使用128 bit标准格式。属性通过ATT被格式化为characteristics和services。

Characteristic 一个characteristic包括一个单一变量和0-n个用来描述characteristic变量的descriptor,characteristic可以被认为是一个类型,类似于类。

Descriptor Descriptor用来描述characteristic变量的属性。例如,一个descriptor可以规定一个可读的描述,或者一个characteristic变量可接受的范围,或者一个characteristic变量特定的测量单位。

Service service是characteristic的集合。例如,你可能有一个叫“Heart Rate Monitor(心率监测仪)”的service,它包括了很多characteristics,如“heart rate measurement(心率测量)”等。你可以在https://www.sodocs.net/doc/6816328861.html, 找到一个目前支持的基于GA TT的配置文件和服务列表。

二.角色和责任

这里有两个概念

中央VS 外围设备。适用于BLE连接本身。中央设备扫描,寻找广播;外围设备发出广播。

GA TT 服务端VS GATT 客户端。决定了两个设备在建立连接后如何互相交流。

为了方便理解,想象你有一个Android手机和一个用于活动跟踪BLE设备,手机支持中央角色,活动跟踪器支持外围(为了建立BLE连接你需要注意两件事,只支持外围设备的两方或者只支持中央设备的两方不能互相通信)。

当手机和运动追踪器建立连接后,他们开始向另一方传输GA TT数据。哪一方作为服务器取决于他们传输数据的种类。例如,如果运动追踪器想向手机报告传感器数据,运动追踪器是服务端。如果运动追踪器更新来自手机的数据,手机会作为服务端。

在这份文档的例子中,android app(运行在android设备上)作为GA TT客户端。app从gatt 服务端获得数据,gatt服务端即支持Heart Rate Profile(心率配置)的BLE心率监测仪。但是

你可以自己设计android app去扮演GA TT服务端角色。也就是自定义

三.案例

好的,Google文档中,也举了一个例子说明,我们要使用BLE的时候,必须有要加上两个权限

这其实你要使用蓝牙这个硬件都是要加上这个权限的,但是这里Google又声明了一点

如果n你想声明你的软件只为具有BLE的设备提供服务的话,你应该要在清单文件中加入

android:name="android.hardware.bluetooth_le"

android:required="true" />

如果改为false的话,那其他蓝牙也是可以使用的,我们创建一个工程——BLETest

和传统蓝牙一样,我们添加完权限之后就要去判断这个设备是否支持BLE

//判断是否支持BLE设备

if(!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) { Toast.makeText(this, "此设备不支持BLE", Toast.LENGTH_SHORT).show();

finish();

}

这步操作也只是你设置为false的时候才是必须的,因为你如果你设置为true,那你只给BLE 服务,那这个判断也就是多余的了,紧接着,我们还需要去判断蓝牙是否开启,如果没有开启,我们就去开启他,这次虽然也是用BluetoothAdapter 去获取,但是这里用了一个新的类BluetoothManager ,先初始化

//初始化蓝牙适配器

BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);

mBluetoothAdapter = bluetoothManager.getAdapter();

然后再去开启

//打开蓝牙

if (mBluetoothAdapter == null || !mBluetoothAdapter.isEnabled()) {

Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);

startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);

}

这里的REQUEST_ENABLE_BT也就是一个回调的标志,无须理会

public static final int REQUEST_ENABLE_BT = 0;

写了这个之后,当我们蓝牙没有开启的时候就会去友好的提示用户开启了

我们现在准备工作都有了之后我们就可以直接去搜索设备了,BLE的api和普通蓝牙的API 还是有一定的区别的,就是有回调了,使用起来挺方便的,但是搜索是很费电的,所以切记要小心使用,最好是找到设备之后就停止扫描或者设置扫描时间,不然你就苦逼了

//搜索设备

@TargetApi(Build.VERSION_CODES.JELL Y_BEAN_MR2)

private void scanLeDevice(final boolean enable) {

if (enable) {

// 经过预定扫描期后停止扫描

mHandler.postDelayed(new Runnable() {

@TargetApi(Build.VERSION_CODES.JELL Y_BEAN_MR2)

@Override

public void run() {

mScanning = false;

mBluetoothAdapter.stopLeScan(mLeScanCallback);

}

}, SCAN_PERIOD);

mScanning = true;

mBluetoothAdapter.startLeScan(mLeScanCallback);

} else {

mScanning = false;

mBluetoothAdapter.stopLeScan(mLeScanCallback);

}

}

这样,当我们接收到搜索设备的回调时便可以直接添加在Adapter上,要注意,所演示的也是Google提供的Demo

//搜索设备的回调

private BluetoothAdapter.LeScanCallback mLeScanCallback =

new BluetoothAdapter.LeScanCallback() {

@Override

public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) {

runOnUiThread(new Runnable() {

@Override

public void run() {

mLeDeviceListAdapter.addDevice(device);

mLeDeviceListAdapter.notifyDataSetChanged();

}

});

}

};

连接GATT服务端

这仅仅是第一步,我们要让BLE拥有强大的能力,就需要连接他的GATT服务端/**

* 1.上下文

* 2.自动连接

* 3.BluetoothGattCallback回调

*/

mBluetoothGatt = device.connectGatt(this, false, mGattCallback);

连接到GATT服务端时,由BLE设备做主机,并返回一个BluetoothGatt实例,然后你可以使用这个实例来进行GATT客户端操作。请求方(软件)是GATT客户端。BluetoothGattCallback 用于传递结果给用户,例如连接状态,以及任何进一步GATT客户端操作。

在这个例子中,这个BLE APP提供了一个activity(DeviceControlActivity)来连接,显示数据,显示该设备支持的GA TT services和characteristics。根据用户的输入,这个activity与BluetoothLeService通信,通过Android BLE API实现与BLE设备交互。

package com.lgl.bletest;

import android.bluetooth.BluetoothAdapter;

import android.bluetooth.BluetoothClass;

import android.bluetooth.BluetoothGatt;

import android.bluetooth.BluetoothGattCallback;

import android.bluetooth.BluetoothGattCharacteristic;

import android.bluetooth.BluetoothManager;

import android.bluetooth.BluetoothProfile;

import android.util.Log;

import java.util.UUID;

/**

* Created by LGL on 2016/5/13.

*/

public class BluetoothLeService extends BluetoothClass.Service {

private BluetoothManager mBluetoothManager; //蓝牙管理器

private BluetoothAdapter mBluetoothAdapter; //蓝牙适配器

private String mBluetoothDeviceAddress; //蓝牙设备地址

private BluetoothGatt mBluetoothGatt;

private int mConnectionState = STA TE_DISCONNECTED;

private static final int STA TE_DISCONNECTED = 0; //设备无法连接

private static final int STA TE_CONNECTING = 1; //设备正在连接状态

private static final int STA TE_CONNECTED = 2; //设备连接完毕

public final static String ACTION_GA TT_CONNECTED =

"com.example.bluetooth.le.ACTION_GA TT_CONNECTED";

public final static String ACTION_GA TT_DISCONNECTED =

"com.example.bluetooth.le.ACTION_GA TT_DISCONNECTED";

public final static String ACTION_GA TT_SERVICES_DISCOVERED =

"com.example.bluetooth.le.ACTION_GA TT_SERVICES_DISCOVERED";

public final static String ACTION_DA TA_A V AILABLE =

"com.example.bluetooth.le.ACTION_DA TA_A V AILABLE";

public final static String EXTRA_DA TA =

"com.example.bluetooth.le.EXTRA_DATA";

public final static UUID UUID_HEART_RATE_MEASUREMENT =

UUID.fromString(SampleGattAttributes.HEART_RA TE_MEASUREMENT);

//通过BLE API的不同类型的回调方法

private final BluetoothGattCallback mGattCallback =

new BluetoothGattCallback() {

@Override

public void onConnectionStateChange(BluetoothGatt gatt, int status,

int newState) {//当连接状态发生改变

String intentAction;

if (newState == BluetoothProfile.STATE_CONNECTED) {//当蓝牙设备已经连接

intentAction = ACTION_GATT_CONNECTED;

mConnectionState = STATE_CONNECTED;

broadcastUpdate(intentAction);

Log.i(TAG, "Connected to GA TT server.");

Log.i(TAG, "Attempting to start service discovery:" +

mBluetoothGatt.discoverServices());

} else if (newState == BluetoothProfile.STATE_DISCONNECTED) {//当设备无法连接

intentAction = ACTION_GATT_DISCONNECTED;

mConnectionState = STATE_DISCONNECTED;

Log.i(TAG, "Disconnected from GATT server.");

broadcastUpdate(https://www.sodocs.net/doc/6816328861.html,Action);

}

}

@Override

// 发现新服务端

public void onServicesDiscovered(BluetoothGatt gatt, int status) {

if (status == BluetoothGatt.GATT_SUCCESS) {

broadcastUpdate(ACTION_GATT_SERVICES_DISCOVERED);

} else {

Log.w(TAG, "onServicesDiscovered received: " + status);

}

}

@Override

// 读写特性

public void onCharacteristicRead(BluetoothGatt gatt,

BluetoothGattCharacteristic characteristic,

int status) {

if (status == BluetoothGatt.GATT_SUCCESS) {

broadcastUpdate(ACTION_DATA_A V AILABLE, characteristic);

}

}

};

}

当触发特定的回调时,它调用适当的broadcastUpdate()辅助方法,通过这一个动作。注意,本节中的数据解析执行按照蓝牙心率测量概要文件规范:

private void broadcastUpdate(final String action) {

final Intent intent = new Intent(action);

sendBroadcast(intent);

}

private void broadcastUpdate(final String action,

final BluetoothGattCharacteristic characteristic) { final Intent intent = new Intent(action);

// This is special handling for the Heart Rate Measurement profile. Data

// parsing is carried out as per profile specifications.

if (UUID_HEART_RA TE_MEASUREMENT.equals(characteristic.getUuid())) { int flag = characteristic.getProperties();

int format = -1;

if ((flag & 0x01) != 0) {

format = BluetoothGattCharacteristic.FORMAT_UINT16;

Log.d(TAG, "Heart rate format UINT16.");

} else {

format = BluetoothGattCharacteristic.FORMAT_UINT8;

Log.d(TAG, "Heart rate format UINT8.");

}

final int heartRate = characteristic.getIntValue(format, 1);

Log.d(TAG, String.format("Received heart rate: %d", heartRate));

intent.putExtra(EXTRA_DATA, String.valueOf(heartRate));

} else {

// For all other profiles, writes the data formatted in HEX.

final byte[] data = characteristic.getValue();

if (data != null && data.length > 0) {

final StringBuilder stringBuilder = new StringBuilder(data.length);

for(byte byteChar : data)

stringBuilder.append(String.format("%02X ", byteChar));

intent.putExtra(EXTRA_DATA, new String(data) + "\n" +

stringBuilder.toString());

}

}

sendBroadcast(intent);

}

返回DeviceControlActivity, 这些事件由一个BroadcastReceiver来处理:

// Handles various events fired by the Service.

// ACTION_GATT_CONNECTED: connected to a GA TT server.

// ACTION_GATT_DISCONNECTED: disconnected from a GATT server.

// ACTION_GATT_SERVICES_DISCOVERED: discovered GATT services.

// ACTION_DATA_A V AILABLE: received data from the device. This can be a

// result of read or notification operations.

private final BroadcastReceiver mGattUpdateReceiver = new BroadcastReceiver() { @Override

public void onReceive(Context context, Intent intent) {

final String action = intent.getAction();

if (BluetoothLeService.ACTION_GA TT_CONNECTED.equals(action)) {

mConnected = true;

updateConnectionState(R.string.connected);

invalidateOptionsMenu();

} else if (BluetoothLeService.ACTION_GA TT_DISCONNECTED.equals(action)) { mConnected = false;

updateConnectionState(R.string.disconnected);

invalidateOptionsMenu();

clearUI();

} else if (BluetoothLeService.

ACTION_GA TT_SERVICES_DISCOVERED.equals(action)) {

// Show all the supported services and characteristics on the

// user https://www.sodocs.net/doc/6816328861.html,ace.

displayGattServices(mBluetoothLeService.getSupportedGattServices());

} else if (BluetoothLeService.ACTION_DA TA_A V AILABLE.equals(action)) {

displayData(intent.getStringExtra(BluetoothLeService.EXTRA_DATA));

}

}

};

读取BLE变量

你的android app完成与GATT服务端连接和发现services后,就可以读写支持的属性。例如,这段代码通过服务端的services和characteristics迭代,并且将它们显示

在UI上。

public class DeviceControlActivity extends Activity {

...

// Demonstrates how to iterate through the supported GATT

// Services/Characteristics.

// In this sample, we populate the data structure that is bound to the

// ExpandableListView on the UI.

private void displayGattServices(List gattServices) { if (gattServices == null) return;

String uuid = null;

String unknownServiceString = getResources().

getString(R.string.unknown_service);

String unknownCharaString = getResources().

getString(R.string.unknown_characteristic);

ArrayList> gattServiceData =

new ArrayList>();

ArrayList>> gattCharacteristicData = new ArrayList>>();

mGattCharacteristics =

new ArrayList>();

// / 循环可用的Characteristics.

for (BluetoothGattService gattService : gattServices) {

HashMap currentServiceData =

new HashMap();

uuid = gattService.getUuid().toString();

currentServiceData.put(

LIST_NAME, SampleGattAttributes.

lookup(uuid, unknownServiceString));

currentServiceData.put(LIST_UUID, uuid);

gattServiceData.add(currentServiceData);

ArrayList> gattCharacteristicGroupData = new ArrayList>();

List gattCharacteristics =

gattService.getCharacteristics();

ArrayList charas =

new ArrayList();

// Loops through available Characteristics.

for (BluetoothGattCharacteristic gattCharacteristic :

gattCharacteristics) {

charas.add(gattCharacteristic);

HashMap currentCharaData =

new HashMap();

uuid = gattCharacteristic.getUuid().toString();

currentCharaData.put(

LIST_NAME, SampleGattAttributes.lookup(uuid,

unknownCharaString));

currentCharaData.put(LIST_UUID, uuid);

gattCharacteristicGroupData.add(currentCharaData);

}

mGattCharacteristics.add(charas);

gattCharacteristicData.add(gattCharacteristicGroupData);

}

...

}

...

}

接收GATT通知

当设备上的特性改变时会通知BLE应用程序。这段代码显示了如何使用setCharacteristicNotification( )给一个特性设置通知。

//GATT服务端

private BluetoothGatt mBluetoothGatt;

BluetoothGattCharacteristic characteristic;

//是否打开

boolean enabled;

...

mBluetoothGatt.setCharacteristicNotification(characteristic, enabled);

...

BluetoothGattDescriptor descriptor = characteristic.getDescriptor(

UUID.fromString(SampleGattAttributes.CLIENT_CHARACTERISTIC_CONFIG)); descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_V ALUE); mBluetoothGatt.writeDescriptor(descriptor);

如果对一个特性启用通知,当远程蓝牙设备特性发送变化,回调函数onCharacteristicChanged( ))被触发。

@Override

// 广播更新

public void onCharacteristicChanged(BluetoothGatt gatt,

BluetoothGattCharacteristic characteristic) {

broadcastUpdate(ACTION_DA TA_A V AILABLE, characteristic);

}

关闭客户端App

当你的app完成BLE设备的使用后,应该调用close( ),系统可以合理释放占用资源。

public void close() {

if (mBluetoothGatt == null) {

return;

}

mBluetoothGatt.close();

mBluetoothGatt = null; }

代码可能有点乱

基于android的通讯录毕业设计开题报告

安徽科技学院本科生毕业论文(设计)开题报告书 题目基于Android的通讯录设计与实现 学生姓名指导教师职称 研究目的意义及国内外研究状况和应用前景(附参考文献): 一、研究目的意义 随着计算机行业的发展,智能手机在人们的生活中变得火热。智能手机拥有的独立操作系统使得手机能像个人电脑一样支持用户自定义安装软件等程序,并通过此类操作对手机功能进行扩充,从而在更大程度上满足用户的需求,这是智能手机的优势,也是智能手机赢得市场的主要原因。具有开放性的Android手机平台,从2007年谷歌将其正式向外界展示以来,发展迅速,手机市场份额不断攀升,至2012年已超过塞班,跃居第一。通过Android系统的开源性、智能型,我们可以看到Android更光明的未来。 手机系统越来越强大,却始终不会抛弃其最基本的功能——通讯,而通讯录又是通讯的必备软件。此次我们研究的基于Android的手机通讯录,会实现通讯录基本功能,包括基本添加,修改,删除和输出等功能,在实现这些功能的基础上添加一些其他功能,例如为联系人添加头像,联系人分组,通讯录黑名单等,使通讯录界面更友好、功能更人性化。通过设计制作次通讯录能够更好地学习Android 的项目开发知识,熟悉Android的软件开发流程,拓展就业能力。 二、国内外研究现状 Android是一种以Linux为基础的开放源代码操作,主要用于便携设备。Android 操作系统最初由Andy Rubin开发,最初主要支持手机。2005年由Google收购注资。2007年11月Google宣布推出基于Linux的Android开放式手机操作系统,沿袭至今,已发展到4.0.4版本。2011年第一年度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。2011年11月数据,Android占据全球智能手机操作系统市场52.2%的份额,中国市场占有率58% 基于Android的通讯录的研究也在Android迅速发展的同时逐步走向成熟,在更大程度上满足着用户的需求。除包括基本添加联系人,编辑联系人,删除联系人和联系人数据导出等功能,它又逐渐增加了联系人分组、添加联系人头像、通讯录黑名单等功能。 三、应用前景 根据手机功能使用调查显示,有八成以上的消费者使用手机通讯功能。随着手机通讯录功能的不断曾强于完善,手机通讯录对于人们的意义已不仅仅像记事簿一样显示通讯地址,而是向着个性化、人性化的发展方向发展。 四、参考文献 [1]高焕堂,Android应用框架原理与程序设计(第三版)[M] 北京:清华大学出版社,2007. [2]盖锁林,Android开发入门指南[M] 北京:人们邮电出版社,2009. [3]李兴华,名师讲坛——Android开发实战经典清华大学出版社,2012. [4]李兴华,名师讲坛——Java Web开发实战经典清华大学出版社,2012. [5]杨丰盛,Android应用开发解密[M] 西安:机械工业出版社,2010. 主要内容、研究方法和思路:

基于android的手机通讯录(附程序)

20xx-20xx 学年 x 学期 xxxx大学电工电子实验教学中心 创新性实验研究报告 实验项目名称_基于android的手机通讯录_ 组长姓名xxx 学号xxxxxxxxxxxxxxx 联系电话xxxxxxxxxxxx E-mail xxxxxxxxxxxx@https://www.sodocs.net/doc/6816328861.html, 成员姓名xxx 学号xxxxxxxxxxxxx 成员姓名xxx 学号xxxxxxxxxxxxxxx 专业电子信息工程班级20xx级x班 指导教师及职称xx 20xx年x月x 日

开发流程见下图: 1、增加、删除、编联系人 点击通信录界面中的增加按钮,入增加联系人面。输入联系人的基本信息,并可根据用户需求增加个性化信息如头像、姓名、手机号码、办室电话、家庭电话、职务职称、单位名称、地址、邮政编码、Email、其他联系方式、备注这些信息,击确认返回主界面。点击通信录中一个已存在的联系人,进入联系人编辑界面,可修改系人的资料或进行删除联系人操作,完成后退回到主界面。对列表中联系人的标记,点mnu键弹出功能界面上的删除按键也可进行删除。还可以在菜单上选择删除全部联系人清空通讯录。在删除联系人的过程中,系统将提示用户是否继续操作,若放弃操作,则系人信息将继续保存。 2、查找联系人 用户点击menu键打开底部菜单框,底部菜单框为查询系人提供入口,进入通讯录的缺省页面为联系人列表,在列表中看到所有联系人的姓名、电话息排列,用户点击查找按键输入联系人基本信息,通讯录显所有符合查询条件的联系人列表,用户选择一个联系人进入联系人基本信息页面进行其他操作;查询完成,用户按返回键返回主界面。 3、通功能 用户在通录选择联系人进入联系详细信息界面,这时点击menu键打开通信功能框,选择打电话、发信息的功能进行操作。 4、菜单能 通过对menu按的点击,显示底部菜框,包含有增加查找、除、菜单、返回功能,菜单按键则包含显示所有、删除所有等实用功能。

基于Android的通讯录管理系统

JAVA程序设计课程设计报告——基于Android的通讯录管理系统 班级:1120552 学号:01 姓名:杨喆

一、课程设计题目 基于Android的通讯录管理系统 二、需求分析 (1) 用户通过联系人功能可以保存联系人的详细信息,可以对联系人进行编辑、删除、拨打电话、发送短信可以根据索引条件搜索联系人。 (2) 用户通过个人中心可以设置自己的详细信息,这样方便其他人了解自己,也可以将具有相同名字的联系人合并。 (3)该通讯录软件是一种主要用来记录联系人的基于安卓平台的软件,可以运行在安卓平台虚拟器或者运行在安卓平台的手持设备上 三、概要设计 一个好的系统设计的步骤决定了程序是否能按照设计者的目的按时完成,是否能在规定的时间内按照设计者的要求高质量的完成程序必要的功能。并且按照标准的设计步骤对程序进行调试,测试,以及后期的优化完善,使程序更加具有健壮性和可用性。通过对通讯录功能、系统模块、用户需求方面进行全方位的分析制定开发流程。 采用标准的开发流程确定系统具有用户管理功能,联系人增删改功能,通讯功能,查找功能,备份等功能。 四、详细设计 1增加、删除、编辑联系人 点击通信录界面中的增加按钮,进入增加联系人界面。输入联系人的基本信息,并可根据用户需求增加个性化信息如头像、姓名、手机号码、办公室电话、家庭电话、职务职称、单位名称、地址、邮政编码、Email、其他联系方式、备注这些信息,单击确认返回主界面。点击通信录中一个已存在的联系人,进入联系人编辑界面,可修改联系人的资料或进行删除联系人操作,完成后退回到主界面。对列表中联系人的标记,点击menu键弹出功能界面上的删除按键也可进行删除。还可以在菜单上选择删除全部联系人来清空通讯录。在删除联系人的过程中,系统将提示用户是否继续操作,若放弃操作,则联系人信息将继续保存。 2查找联系人 用户点击menu键打开底部菜单框,底部菜单框为查询联系人提供入口,进入通讯录的缺省页面为联系人列表,在列表中看到所有联系人的姓名、电话信息排列,用户点击查找按键输入联系人基本信息,通讯录显示所有符合查询条件的联系人列表,用户选择一个联系人进入联系人基本信息页面进行其他操作;查询完成,用户按返回键返回主界面。

Android实验报告_基于SQLite的通信录

第一次实验Android界面设计 一. 实验目的及实验环境 1. 实验目的 1)掌握SQLiteOpenHelper类结构 2)掌握基于SQLite数据库的应用开发过程 3)掌握Content Provider发布数据的方法 4)掌握Content Resolver获取数据的方法 2.实验环境 系统开发平Android Studio 3.0 系统开发平台:Android 7.1 运行平台:Windows10 x64 运行环境:https://www.sodocs.net/doc/6816328861.html, Framework SDK 2.0 二. 实验教材、组织方式、实验内容 1.实验教材:Andorid开发与应用 2.组织方式:个人独立完成 2.实验内容: 实现基于SQLite数据库的通信录应用,通过单击增加图标打开添加通信录界面,通过单击通信录中的各条信息可删除选中项。 三.方案设计 Android系统中集成了SQLite数据库,并且为数据库的操作提供了相关的类和方法,便于没有数据库开发经验的开发者编写程序。另外,Android平台中利用Content Provider机制来实现跨应用程序数据共享。一个应用程序可以通过Content Provider来发布自己的数据,其他的应用程序可以通过Content Resolver 来获取共享数据。

四.运行结果

五.总结 通过这次实验掌握了SQLite OpenHelper类结构,掌握了基于SQLite数据库的应用开发过程以及Content Provider发布数据的方法和掌握Content Resolver获取数据的方法。 六.附录:源代码 主布局文件activity_main.xml:

基于android的手机通讯录的设计与实现大学本科毕业论文

基于Android的天气预报查询系统的实现摘要:随着智能手机一步步走进人们的生活,它将成为人们获取信息的主要设备,相关应用越来越广泛,并在人们的日常生活中扮演着越来越重要的角色。因此,关键应用程序的开发成为影响移动智能终端普及的重要因素,设计并开发实用、方便的应用程序具有重要的意义和良好的市场前景。Android作为当前最流行的操作平台,自然也存在着大量的应用服务需求。 Android是基于Linux平台完全开源的手机操作系统,同时开发语言为Java,因此我选择了以Android为平台的手机天气预报系统来作为我的毕业设计,目的是帮助用户随时随地查询天气信息及天气变化情况,让生活更加舒适方便。本文详细讲述了Android平台下天气软件的界面设计及界面的实现、控件的使用、界面的布局等内容,结合中国气象网的天气数据,将准确的天气情况以友好的方式呈现给用户,使用户可以更加赏心悦目地体验本软件的服务。 关键词:Android 天气软件手机天气预报软件系统

System implementation of weather query based on Android Abstract With the development of intelligent mobile phone step by step into people's lives, it will become the main device to obtain information, related to more widely, and plays a more and more important role in people's daily life. Therefore, the development of critical applications has become an important factor affecting the popularization of mobile intelligent terminal, application design and development of practical, convenient has important significance and good market prospects. Android as the most popular operating platform, natural also exist in application service needs of a large number of. Android is a mobile phone operating system Linux platform based on open source, at the same time, the development of language Java, so I chose the platform of mobile phone weather system with Android as my graduation design, the purpose is to help the user whenever and wherever possible query weather information and weather condition, make life more comfortable and convenient. This paper describes the layout of content, interface design and interface control weather software under the Android platform use, interface, combined with the weather data of China Meteorological Network, will be accurate weather conditions in a friendly way is presented to the user, the user can be more pleasant experience of the software service. Keyword:Android weather software the software system of mobile phone weather

基于Android平台的手机通讯录管理系统

第一章绪论 1.1 项目研究背景 经过多年的发展,随着第三代网络的使用及四代网络的即将来了呢,移动终端不再仅是通讯网络的终端,还将成为互联网的终端。因此,移动终端的应用软件和需要的服务将会有很大的发展空间。Google与包括HTC、摩托罗拉、三星、联想等在内的三十多家技术和无线应用的领军企业组成的开发联盟为此于2007年11月退出了一份专为移动设备设计的软件平台——Android OS。 Android 是一套真正意义上的移动性设备综合平台,它包括操作系统、中间件和一些关键的平台应用。Android的Java程序运行环境包含一组Java核心函数库及Dalvik虚拟机,它们有效地优化额Java程序的运行过程。Android 系统平台基于优化了的Linux内核,它提供诸如内存管理、进程管理、设备驱动等服务,同时也是手机硬件的连接层。 Abdroid平台的开放性等特点既能促进技术(包括平台本身)的创新,又有助于降低开发成本,还可以是运营商能非常方便地制定特色化的产品,因此,它具有很大的市场发展潜力。 1.2 项目研究的目的及意义 随着3G网络的使用,移动终端不再仅是通讯网络的终端,还将成为互联网的终端。因此,移动终端的应用软件和需要的服务将会有很大的发展空间。在Google和Android手机联盟的共同推动下,Android在众多手机操作系统中脱颖而出,受到广大消费者的欢迎。 手机通讯录作为手机的基本功能之一,每天我们都在频繁地使用着。根据手机功能的不断加强与完善,手机通讯录对于人们的意义,已经不仅仅像记事簿一样显示通讯地址,而是向着个性化、人性化的方向发展。通讯录从无到有,从英文到中文,经过了十几年的发展历程,今后的发展趋势就是从通讯录发展为名片夹,也就是一个人名下,可以储存座机、手机、单位、地址、电子邮箱等内容,这种名片夹在电话薄的基础上,大大丰富了内容,同时结构也发生了革命性的的变化,而且随着手机的发展,相信更优秀的通讯录会越来越受到社会各层认识的喜爱。 1.3系统主要内容与实现方式

基于android的通讯录毕业设计开题报告

知识不仅是指课本的内容,还包括社会经验、文明文化、时代精神等整体要素,才有竞争力,知识是新时代的资本,五六十年代人靠勤劳可以成事;今天的香港要抢知识,要以知识取胜安徽科技学院本科生毕业论文(设计)开题报告书 题目 基于Android的通讯录设计与实现 学生姓名 指导教师 职称 研究目的意义及国内外研究状况和应用前景(附参考文献): 一、研究目的意义 随着计算机行业的发展 智能手机在人们的生活中变得火热 智能手机拥有的独立操作系统使得手机能像个人电脑一样支持用户自定义安装软件等程序并通过此类操作对手机功能进行扩充 从而在更大程度上满足用户的需求 这是智能手机的优势 也是智能手机赢得市场的主要原因 具有开放性的Android手机平台 从2007年谷歌将其正式向外界展示以来 发展迅速 手机市场份额不断攀升 至2012年已超过塞班 跃居第一 通过Android系统的开源性、智能型 我们可以看到Android更光明的未来 手机系统越来越强大 却始终不会抛弃其最基本的功能--通讯 而通讯录又是通讯的必备软件 此次我们研究的基于Android的手机通讯录 会实现通讯录基本功能 包括基本添加 修改 删除和输出等功能 在实现这些功能的基础上添加一些其他功能 例如为联系人添加头像 联系人分组 通讯录黑名单等 使通讯录界面更友好、功能更人性化 通过设计制作次通讯录能够更好地学习Android的项目开发知识 熟悉Android的软件开发流程

拓展就业能力 二、国内外研究现状 Android是一种以Linux为基础的开放源代码操作 主要用于便携设备 Android操作系统最初由Andy Rubin开发 最初主要支持手机 2005年由Google收购注资 2007年11月Google宣布推出基于Linux的Android开放式手机操作系统沿袭至今 已发展到4.0.4版本 2011年第一年度 Android在全球的市场份额首次超过塞班系统 跃居全球第一 2011年11月数据 Android占据全球智能手机操作系统市场52.2%的份额 中国市场占有率58% 基于Android的通讯录的研究也在Android迅速发展的同时逐步走向成熟在更大程度上满足着用户的需求 除包括基本添加联系人 编辑联系人 删除联系人和联系人数据导出等功能 它又逐渐增加了联系人分组、添加联系人头像、通讯录黑名单等功能 三、应用前景 根据手机功能使用调查显示 有八成以上的消费者使用手机通讯功能 随着手机通讯录功能的不断曾强于完善 手机通讯录对于人们的意义已不仅仅像记事簿一样显示通讯地址 而是向着个性化、人性化的发展方向发展 四、参考文献 [1]高焕堂 Android应用框架原理与程序设计(第三版)[M] 北京:清华大学出版社2007. [2]盖锁林 Android开发入门指南[M] 北京:人们邮电出版社 2009. [3]李兴华 名师讲坛--Android开发实战经典清华大学出版社 2012. [4]李兴华 名师讲坛--Java Web开发实战经典清华大学出版社 2012.

基于Android系统手机通讯录管理软件的设计与开发

毕业设计题目基于Android系统手机通讯录 管理软件的设计与开发 二级学院计算机科学与工程学院 专业软件工程 班级08软件工程3班级 学生姓名张三学号99999999999 指导教师李王五 时间2011/9 - 2011/10

摘要............................................................................................................................................ I Abstract ............................................................................................................................................. II 第一章绪论. (2) 1.1项目研究背景 (2) 1.2项目研究的目的及意义 (2) 1.3系统主要实现内容与实现方式 (3) 1.3.1系统主要实现内容 (3) 1.3.2安卓系统开发的方法 (3) 1.3.3 系统的开发平台 (4) 1.4系统开发需用到的技术支持 (4) 1.4.1 Java语言 (4) 1.4.2 Android (5) 第二章系统分析 (6) 2.1系统可行性分析 (6) 2.1.1技术可行性 (6) 2.1.2经济可行性 (6) 2.1.3操作可行性 (6) 2.2需求分析 (6) 2.2.1 Android通讯录的使用意义 (7) 2.2.2外部事件 (7) 第三章系统概要设计 (8) 3.1系统总体设计 (8) 3.2处理流程设计 (9) 3.2.1业务流程图 (9) 3.2.2数据增加流程图 (10) 3.2.3数据修改流程图 (11) 3.2.4数据删除流程 (12) 3.3 数据库设计 (12) 3.3.1 SQLite数据库简介 (12) 3.3.3 数据库表结构 (13) 第四章系统详细设计 (13) 4.1联系人浏览模块 (13) 4.2查看联系人模块 (16) 4.3编辑联系人模块 (17) 5.4查找联系人模块 (18) 4.5关于 (19) 第五章系统测试与调试 (19) 5.1测试目的 (19) 5.2程序调试 (20) 5.3 测试的主要内容 (20) 5.4测试用例 (21) 5.4.1功能测试—添加联系人 (21)

Android开发实验---通讯录

实验报告 通讯录 姓名: 学号: 课程名称:移动应用开发 所在学院:信息科学与工程学院 专业班级:计算机 任课教师:

主要功能分析: 1、增加、删除、编联系人 点击通信录界面中的增加按钮,入增加联系人面。输入联系人的基本信息,并可根据用户需求增加个性化信息如头像、姓名、手机号码、办室电话、家庭电话、职务职称、单位名称、地址、邮政编码、Email、其他联系方式、备注这些信息,击确认返回主界面。点击通信录中一个已存在的联系人,进入联系人编辑界面,可修改系人的资料或进行删除联系人操作,完成后退回到主界面。对列表中联系人的标记,点mnu键弹出功能界面上的删除按键也可进行删除。还可以在菜单上选择删除全部联系人清空通讯录。在删除联系人的过程中,系统将提示用户是否继续操作,若放弃操作,则系人信息将继续保存。 2、查找联系人 用户点击menu键打开底部菜单框,底部菜单框为查询系人提供入口,进入通讯录的缺省页面为联系人列表,在列表中看到所有联系人的姓名、电话息排列,用户点击查找按键输入联系人基本信息,,通讯录显所有符合查询条件的联系人列表,用户选择一个联系人进入联系人基本信息页面进行其他操作;查询完成,用户按返回键返回主界面。 3、通功能 用户在通录选择联系人进入联系详细信息界面,这时点击menu键打开通信功能框,选择打电话、发信息的功能进行操作。 4、菜单能 通过对menu按的点击,显示底部菜框,包含有增加查找、除、菜单、返回功能,菜单按键则包含显示所有、删除所有等实用功能。 增加联系人: 这个功能由ContactAdder类完成,具体实现不是比较麻烦,保存动作由ContentResolver类解决,但实现方式有所不同,可分为一次性批量增加与挨个增加。 由于界面设置繁琐,代码页过多,所以挑出其中的一部分进行说明 首先是DB数据库建库过程: package com.xample.hivian.my_contact_manager.models.db; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteOpenHelper; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import com.example.hivian.my_contact_manager.models.Contact; import com.example.hivian.my_contact_manager.models.Sms; import java.util.ArrayList; import java.util.List; public class DBHandler extends SQLiteOpenHelper {// Database Version

基于Android系统手机通讯录管理软件的设计与开发_毕业设计

重庆理工大学毕业论文基于Android的通讯录软件重庆理工大学 毕业设计 题目基于Android系统手机通讯录 管理软件的设计与开发 二级学院计算机科学与工程学院 专业软件工程 班级08软件工程3班级 时间2011/9 - 2011/10

摘要............................................................................................................................................ I Abstract ............................................................................................................................................. II 第一章绪论. (2) 1.1项目研究背景 (2) 1.2项目研究的目的及意义 (2) 1.3系统主要实现内容与实现方式 (3) 1.3.1系统主要实现内容 (3) 1.3.2安卓系统开发的方法 (3) 1.3.3 系统的开发平台 (4) 1.4系统开发需用到的技术支持 (4) 1.4.1 Java语言 (4) 1.4.2 Android (5) 第二章系统分析 (6) 2.1系统可行性分析 (6) 2.1.1技术可行性 (6) 2.1.2经济可行性 (6) 2.1.3操作可行性 (6) 2.2需求分析 (6) 2.2.1 Android通讯录的使用意义 (7) 2.2.2外部事件 (7) 第三章系统概要设计 (8) 3.1系统总体设计 (8) 3.2处理流程设计 (9) 3.2.1业务流程图 (9) 3.2.2数据增加流程图 (10) 3.2.3数据修改流程图 (11) 3.2.4数据删除流程 (12) 3.3 数据库设计 (12) 3.3.1 SQLite数据库简介 (12) 3.3.3 数据库表结构 (13) 第四章系统详细设计 (13) 4.1联系人浏览模块 (13) 4.2查看联系人模块 (16) 4.3编辑联系人模块 (17) 5.4查找联系人模块 (18) 4.5关于 (19) 第五章系统测试与调试 (19) 5.1测试目的 (19) 5.2程序调试 (20) 5.3 测试的主要内容 (20) 5.4测试用例 (21) 5.4.1功能测试—添加联系人 (21) 5.4.2功能测试—查看联系人 (21) 5.4.3功能测试—删除联系人 (22)

(完整版)基于android手机通讯录的设计与实现的毕业论文设计

基于Android手机通讯录的设计与实现 摘要:随着第三代通信技术3G的推广,无线带宽和传输速度都得到了大幅度提升,为智能手机终端添加更多内容丰富的应用功能提供了良好的平台。本系统是基于谷歌公司新推出的一款Linux平台的开源手机操作系统——Android系统,利用Java语言,Eclipse为开发工具,通过对平台的系统架构和应用程序进行学习,设计出一款手机通讯录。本系统包括存储,删除,Android修改,打电话,发信息,发邮件,备份SD卡等功能,满足了用户对通讯录的需求。此通讯录的设计遵循标准的开发流程,首先进行需求分析,然后确定通讯录的功能,再编写程序的代码,调试程序,运行程序,并对程序进行优化完善。本软件利用Android提供的各种组件对界面进行设计,能够很好地支持用户体验。 关键词:Android;手机通讯录;智能手机; Design and Implementation of Mobile Phone Contacts Based on Android Abstract: With the 3G promotion of third-generation communications technology, wireless bandwidth and transmission speed improved significantly, and provides a good platform for smart mobile terminals to add more content-rich applications. The design is based on the Google Corporation a new version of the Linux platform to the source mobile phone operating system -- Android system, using Java language, Eclipse as a development tool, through the Android platform system architecture and application for research, design a mobile phone contacts. The design including

基于Android系统的通讯录设计文档毕业论文

目录 错误!未找到引用源。项目介绍 (2) 错误!未找到引用源。数据库设计 (3) 错误!未找到引用源。系统概要设计 (4) 错误!未找到引用源。类的设计 (11) 错误!未找到引用源。功能实现 (14) 错误!未找到引用源。部分代码 (20) 错误!未找到引用源。实验心得 (26)

第一章项目介绍 本项目是使用eclipse开发平台,并连接使用SQlite数据库编写的通讯录。分为后台数据库的建立和维护,以及前端应用程序的开发两个部分,主要包括添加、删除、修改联系人姓名、电话、住址等。 1.功能需求分析: 当今社会是信息高速发展的时代,朋友圈也逐渐得到扩展,而人与人之间的联系也愈加密切,准确详细并安全的保存需要联系的人的信息则显得更加重要。 2.功能模块分析: (1)查询所有联系人模块:可以查询所有添加成功的联系人的信息。 (2)搜索联系人模块:可以按照关键字进行搜索。 (3)新联系人模块:可以添加新联系人的信息。 3.数据流图: 数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。按照系统的业务流程来分析系统中的信息流向,可画出系统的数据流图如下: 4.功能模块结构图:

第二章数据库设计 本项目使用SQLite数据库系统,其库文件为:contacts.db,表名称为:contacts 其具体定义如下: 字段类型描述 _id Integer id name Text 姓名 mobileNumber Text 电话 email Text 邮箱 createDate Long 创建时间 modifyedDate long 修改时间 company Text 公司

(毕业设计)基于Android通讯录的设计与实现

毕业论文(设计)题目基于Android通讯录管理系统设计与实现 学生姓名 学号 学院 专业 指导教师 联系QQ 1912881988 本人严重声明:

1、持以“求实、创新”的科学精神从事研究工作。 2、本文是我个人在导师指导下进行的研究工作和取得的研究成果。 3、本文除引文外,所有实验、数据和有关材料均是真实的。 4、本文除引文和致谢内容外,没有抄袭其他人或其他机构发表或撰写过的研究成果。 作者签名:__________ 日期:__________

目录 1 绪论 (1) 1.1 手机通讯录管理系统的开发背景 (1) 1.2 手机通讯录管理系统的研究目的和意义 (1) 1.3 系统主要实现内容及实现方式 (1) 1.3.1系统主要实现功能 (1) 1.3.2 Android系统的开发平台 (2) 1.4 系统开发所需的技术支持 (2) 1.4.1 Java开发语言 (2) 1.4.2 Android简介 (3) 2 手机通讯录管理系统分析 (3) 2.1技术可行性分析 (3) 2.2 经济可行性分析 (4) 2.3 需求可行性 (4) 3 系统概要设计 (4) 3.1 总体功能设计 (4) 3.2 系统流程设计 (5) 3.2.1 业务流程图 (5) 3.3 系统数据库简介与设计 (6) 3.3.1 SQLite数据库简介 (6) 3.3.2 系统数据库设计 (6) 4 系统详细设计 (7) 4.1 联系人模块 (7) 4.1.1 联系人操作模块 (7) 4.1.2 联系人查找模块 (9) 4.2 信息模块 (10) 4.2.1 信息显示模块 (10) 4.2.2 信息编辑模块 (10) 4.3 个人中心模块 (12) 5 系统测试与调试 (13) 5.1 测试的概念 (13) 5.2测试的目的 (13) 5.3 测试的原则 (13) 5.4程序测试 (14) 5.5 测试的主要内容 (14) 5.6 测试用例 (14) 5.7 系统测试结果 (15) 5.7.1 编辑联系人功能测试 (15)

基于Android系统手机通讯录管理软件的设计与开发(精)

重庆理工大学毕业设计 题目 管理软件的设计与开发 二级学院计算机科学与工程学院 专业软件工程 班级 08软件工程 3班级 学生姓名张三学号 99999999999 指导教师李王五 时间 2011/9 - 2011/10 摘 要 ............................................................................................................................................ I Abstract ................................................................................................................................. ............ II 第一章绪 论 . (2) 1.1项目研究背 景 . .................................................................................................................... 2 1.2项目 研究的目的及意义 . .................................................................................................... 2 1.3系统主要实现内容与实现方式 . ........................................................................................ 3 1.3.1系统主要实现内容 . ............................................................................................... 3 1.3.2安卓系统开发的方法 . ........................................................................................... 3 1.3.3 系统的开发平台 . (4)

j基于android的通讯录开发开题报告

计算机学院毕业论文(设计) 开题报告 论文题目:《基于android的通讯录系统开发》 专业网络工程 班级 09网络工程本科班 学生姓名马可闵 学号 0807130013 导师姓名刘琴 导师职称讲师 2012 年 12 月 8日

《基于android通讯录系统的开发》 课题名称 课题类型AX 课题来源自选题目导师刘琴 学生姓名马可闵学号0807130013 专业网络工程 一、课题研究现状及发展趋向 Android是谷歌发布的移动平台操作系统,主要用于智能手机,平板电脑,以及其他一些移动智能设备,android自发布至今的不长时间内,已经发展成为当今最主要的智能手机操作系统,现在的市场占有率占世界第一位,同时由于Android是一个比较新的操作系统,有众多硬件厂商及谷歌的共同努力,其前景受众人看好;由于Android发布至今时间不长,所以这方面的开发人员缺口比较大,同时Android操作系统已由原来的1.1发展到现在的4.3发布,已经经历了很多版本,正在向着更加智能,高效,更适合用户使用的方向发展。 在基于Android系统的众多应用中,移动通讯录是一种利用互联网或移动互联网实现通讯录信息同步更新和备份的应用/服务。通讯录是每个手机都必备的应用软件,俗话说好脑子不如个烂笔头,一个人的记忆能力再好也不可能几下自己所有朋友伙伴的通讯信息,更何况世界上这么多人,智能手机内安装一个比较好的通讯录就可以解决很多不必要的麻烦,至少不用为在关键时候自己忘了朋友的联系方式而困扰。 二、主要研究的目的及内容 研究用户使用习惯,以及其他产品的操作体验,切实从android用户角度出发,用android开发工具及开发语言,开发出一款可以切实符合大众使用习惯,同时功能齐全的通讯录。 研究android SDK以及各个操作系统版本差异,以便解决相关的版本的程序软件兼容性的问题。 从开发语言角度,内存使用率角度研究,以便能在不同的手机硬件平台下很好的实现软件的完美运行。

系统分析设计安卓通讯录课程设计报告书

2015-2016学年第1学期《系统分析与设计》课程设计 项目名称:基于安卓系统的手机通讯录 指导教师:王娟 班级: 13级Java1班 学生:

第一章项目介绍 选题:鉴于本次课程设计的目的是通过一些实际的例子,培养学生分析和解决实际问题的能力,培养学生综合应用基本概念、基本原理和技术方法的能力,真正做到学以致用,使课本上抽象的理论、方法与具体的实践应用相结合,所以我们组选择了安卓通讯录这个课题。 背景:Android本意词是指“机器人”,同时也是Goole于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,Android是一种基于Linux 的自由及开放源代码的操作系统,Android以其自由开放源代码的特点而成为最热门的智能手机。 在这个信息化的时代,手机已成为继固话之后最为通俗的交流工具,“通讯”成了生活的必需品,这就有了系统下人与人之间的多样联系方式——手机通讯录。传统通讯录以纸为载体,将需要记录的联系人一一人登记在册,包括地址、联系方式等,再在需要时进行翻阅查询。手机通讯录,在手机系统下,占用手机相对很小的空间,系统的记录联系人的联系方式及其他信息,不仅突破了各种条件的舒服,减轻了机主的负担,更方便了使用者的通讯。 综上所述,手机通讯录管理系统是一个高效、实时、绿色环保的管理系统。然而现在很多通讯录外观花哨、功能单一或形同虚设。针对以上各种弊端,我们通过需求分析等着手设计一款简单方便的通讯录。 项目:本项目的设计工作如下:选题、分组、任务划分,需求建模(需求基本描述,用例图和用例描述),系统分析(查找分析类,序列图和活动图),系统设计(功能设计——程序流程图,数据库设计,界面设计——原型图)。本项目使用eclipse开发平台,并连接使用SQlite数据库编写。分为后台数据库的建立和维护,以及前端应用程序的开发两个部分,主要包括添加、删除、修改联系人、、住址等。 组员分工: 需求分析(用例描述):赓 系统分析(时序图、协作图、类图):坤鹏四林王文凯王浩 系统设计(数据库、界面设计):王浩 整理总结:王浩

相关主题