微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Android系统开发全攻略(二)

Android系统开发全攻略(二)

时间:06-08 来源:互联网 点击:

}

else if (lp.rightMargin 》 -(mRightMargin) mScrollX 《 0) {//往右拖拉

lp.rightMargin = Math.max((lp.rightMargin + (int) mScrollX),-mRightMargin);

Panel.this.setLayoutParams(lp);

}

if(lp.rightMargin==0 panelOpenedEvent!=null){//展开之后

panelOpenedEvent.onPanelOpened(Panel.this);//调用OPEN回调函数

}

else if(lp.rightMargin==-(mRightMargin) panelClosedEvent!=null){//收缩之后

panelClosedEvent.onPanelClosed(Panel.this);//调用CLOSE回调函数

}

Log.e(“onScroll”,lp.rightMargin+“”);

return false;

}

@Override

public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,

float velocityY) {return false;}

@Override

public void onLongPress(MotionEvent e) {}

@Override

public void onShowPress(MotionEvent e) {}

}

《/SPAN》

三、Android智能手机蓝牙通信功能开发:BluetoothChat例程分析

1. 概述

Bluetooth 是几乎现在每部手机标准配备的功能,多用于耳机 mic 等设备与手机的连接,除此之外,还可以多部手机之间建立 bluetooth 通信,本文就通过 SDK 中带的一个聊天室的例程,来介绍一下 Android 上的 Bluetooth 的开发。

在 Android1.x 的时候,相关 API 非常不完善,还不能简单的使用 Bluetooth 开发,有一个开源项目可以帮助程序员使用、开发蓝牙,支持直接方法 bluetooth 协议栈。在 Android2 以后,框架提供了一些官方 API 来进行蓝牙的通信,但目前的程序也比较不完善。本文主要讨论 Android2 后的 Bluetooth 通信的 API 使用方法。

首先看聊天室的效果图:

  

2. Bluetooth 通信 API 介绍

2.1. Bluetooth 通信过程

  

2.2. Bluetooth API 的主要方法

BluetoothAdapter 类

BluetoothAdapter.getDefaultAdapter() :得到本地默认的 BluetoothAdapter ,若返回为 null 则表示本地不支持蓝牙;

isDiscovering() :返回设备是否正在发现周围蓝牙设备;

cancelDiscovery() :取消正在发现远程蓝牙设备的过程;

startDiscovery() :开始发现过程;

getScanMode() :得到本地蓝牙设备的 Scan Mode ;

getBondedDevices() :得到已配对的设备;

isEnabled() :蓝牙功能是否启用。

当发现蓝牙功能未启用时,如下调用设置启用蓝牙:

  

如果发现当前设备没有打开对外可见模式,则传递 Intent 来调用打开可发现模式,代码如下:

  

BluetoothDevice 类,此为对应的远程蓝牙 Device

createRfcommSocketToServiceRecord() :创建该 Device 的 socket 。

BluetoothSocket 类

connect() :请求连接蓝牙。

getInputStream() :得到输入流,用于接收远程方信息。

getOutputStream() :得到输出流,发送给远程方的信息。

close() :关闭蓝牙连接。

InputStream 类:

read(byte[]) :以阻塞方式读取输入流。

OutputStream 类:

write(byte[]) :将信息写入该输出流,发送给远程。

3. BluetoothChat 例程分析

Google 提供的关于 Bluetooth 开发的例程为 Bluetoothchat ,使用截图可见本文一开始。除去配置及 ui 定义等文件,主程序文件共三个: BluetoothChat.java 、 BluetoothChatService.java 以及 DeviceListActivity.java ,详细功能可见下面的描述。

3.1. 整体调用关系序列图

  

3.2. BluetoothChat.java

例程的主 Activity 。 onCreate() 得到本地 BluetoothAdapter 设备,检查是否支持。 onStart() 中检查是否启用蓝牙,并请求启用,然后执行 setupChat() 。 setupChat() 中先对界面中的控件进行初始化增加点击监听器等,然创建 BluetoothChatService 对象,该对象在整个应用过程中存在,并执行蓝牙连接建立、消息发送接受等实际的行为。

3.3. BluetoothChatService.java

public synchronized void start() :

开启 mAcceptThread 线程,由于样例程序是仅 2 人的聊天过程,故之前先检测 mConnectThread 和 mConnectedThread 是否运行,运行则先退出这些线程。

public synchronized void connect(BluetoothDevice device) :

取消 CONNECTING 和 CONNECTED 状态下的相关线程,然后运行新的 mConnectThread 线程。

public synchronized void connected(BluetoothSocket socket, BluetoothDevice device) :

开启一个 ConnectedThread 来管理对应的当前连接。之前先取消任意现存的 mConnectThread 、 mConnectedThread 、 mAcceptThread 线程,然后开启新 mConnectedThr

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top