android开发流程,android构建流程

android开发SPP经典蓝牙

Android 开发SPP经典蓝牙。

创新互联凭借在网站建设、网站推广领域领先的技术能力和多年的行业经验,为客户提供超值的营销型网站建设服务,我们始终认为:好的营销型网站就是好的业务员。我们已成功为企业单位、个人等客户提供了成都网站建设、网站制作服务,以良好的商业信誉,完善的服务及深厚的技术力量处于同行领先地位。

1、传统蓝牙采用的是SPP(Serial Port Profile)协议进行数据传输。

2、SPP的UUID:00001101-0000-1000-8000-00805F9B34FB

3、手机一般以客户端的角色主动连接SPP协议设备

概念:

BluetoothAdapter:

本地蓝牙适配器,是所有蓝牙交互的入口,表示蓝牙设备自身的一个蓝牙适配器,整个系统只有一个蓝牙适配器,通过他可以发现其他蓝牙设备,查询绑定(配对)设备列表,使用MAC地址实例化BluetoothDevice以及创建BluetoothServerSocket用来侦听来自其他设备的通信。

myBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();//获取默认的蓝牙Adapter

BluetoothDevice:

远程的蓝牙设备。

private static BluetoothDevice myDevice;

myDevice = myBluetoothAdapter.getRemoteDevice(BDAddr);//获取远程设备,通过蓝牙的MAC地址来获取一个远程对象

两种连接方式

BluetoothSocket

客户端:调用BluetoothDevice的createRfcommSocketToServiceRecord()可以获取该对象;调用connect()方法可以建立连接。

private static BluetoothSocket mySocket = null;

private static final UUID SPP_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");

Method m = myDevice.getClass().getMethod("createRfcommSocket", new Class[] {int.class});//由BluetoothDevice衍生出BluetoothSocket, createRfcommSocket来选择连接的服务和协议

mySocket = (BluetoothSocket) m.invoke(myDevice, 1);

BluetoothServerSocket:

服务端:通过BluetoothServerSocket对象可以创建BluetoothSocket对象,调用BluetoothServerSocket的accept()的方法可以得到改对象。

开发流程:

1:声明权限:

uses-permission android:name="android.permission.BLUETOOTH"/

uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/

2:启动和关闭蓝牙

获取蓝牙适配器,使用close()接口可以关闭蓝牙适配器

myBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();//获取默认的蓝牙Adapter

启动蓝牙

if (!blueadapter.isEnabled())

    //判断本机蓝牙是否打开

    {//如果没打开,则打开蓝牙

    blueadapter.enable();

    }

3.使用BlueAdatper搜索 

使用bluetoothAdapter搜索设备,bluetoothAdapter.startDiscovery()在搜索过程中,系统会发出三个广播信息: 

ACTION_DISCOVERY_START:开始搜索 

ACTION_DISCOVERY_FINISHED:搜索结束 

ACTION_FOUND:找到设备

if (bluetoothAdapter.isDiscovering()) {

    bluetoothAdapter.cancelDiscovery();//如果蓝牙设备未连接则取消搜索

}

bluetoothAdapter.startDiscovery();

}

4:(1)通过注册广播获取搜索到的设备。

IntentFilter intentFilter = new IntentFilter();

intentFilter.addAction(BluetoothDevice.ACTION_FOUND);//找到设备广播

intentFilter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);//搜索完成广播

registerReceiver(receiver, intentFilter);//注册广播接收器

// receiver

private final BroadcastReceiver receiver = new BroadcastReceiver(){

@Override

public void onReceive(Context context, Intent intent) {

    String action = intent.getAction();

    if (BluetoothDevice.ACTION_FOUND.equals(action)) {

        // find a device

        BluetoothDevice device = intent .getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

        if (device.getBondState() != BluetoothDevice.BOND_BONDED) {

            //未配对设备

            newDeviceArrayAdapter.add(device.getName() + "\n" + device.getAddress());

        }else {

            //已经配对过的设备

            TextView tvPaired = (TextView)findViewById(R.id.tv_paired);

            tvPaired.setVisibility(View.VISIBLE);

            lvPairedDevices.setVisibility(View.VISIBLE);

            pairedDeviceArrayAdapter.add(device.getName() + "\n" + device.getAddress());

        }

        Log.i(TAG,"name:" + device.getName() + " address"+ device.getAddress());

    } else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action){

        // search finish

        Log.i(TAG, "search finish!");

    }

}

};

(2),直接得到当前的蓝牙设备后,就可用通过遍历pairedDevices ,得到当前手机已经配对过的蓝牙设备。

SetBluetoothDevice pairedDevices = myBluetoothAdapter.getBondedDevices();//获取当前蓝牙设备

if (pairedDevices.size() = 0) return false;

for (BluetoothDevice device : pairedDevices) {

MapString, String map = new HashMapString, String();

map.put("DeviceName", device.getName());

map.put("BDAddress", device.getAddress());

list.add(map);

5.建立连接

private static final UUID SPP_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");

Method m = myDevice.getClass().getMethod("createRfcommSocket", new Class[] {int.class});//由BluetoothDevice衍生出BluetoothSocket, createRfcommSocket来选择连接的服务和协议

mySocket = (BluetoothSocket) m.invoke(myDevice, 1);

mySocket.connect();//使用BluetoothSocket来连接设备

6.把得到的蓝牙设备给通过点击ListView选择设备。

listView.setOnItemClickListener(new ListView.OnItemClickListener() {

public void onItemClick(AdapterView? arg0, View arg1, int arg2, long arg3) {

    SelectedBDAddress = list.get(arg2).get("BDAddress");

    if (((ListView) arg0).getTag() != null) {

        ((View) ((ListView) arg0).getTag()).setBackgroundDrawable(null);

    }

    ((ListView) arg0).setTag(arg1);

    arg1.setBackgroundColor(Color.BLUE);

    myDevice = myBluetoothAdapter.getRemoteDevice(SelectedBDAddress);

}

});

7.客户端发送数据

当两个设备成功连接之后,双方都会有一个BluetoothSocket对象,这时,就可以在设备之间传送数据了。

   1.使用getOutputStream()方法来获取输出流来处理传输。

   2.调用write()。

os = socket.getOutputStream();//获取输出流

if (os != null) {//判断输出流是否为空

os.write(message.getBytes("UTF-8"));

}

os.flush();//将输出流的数据强制提交

os.close();//关闭输出流

}

将输出流中的数据提交后,要记得关闭输出流,否则,可能会造成只能发送一次数据。

8.服务端接收数据

1.使用getInputStream()方法来获取输入流来处理传输。

   2.调用read()。

InputStream im=null;

im=bluetoothSocket.getInputStream();

byte buf[] = new byte[1024];

if (is != null) {

is.read(buf, 0, buf.length);//读取发来的数据

String message = new String(buf);//把发来的数据转化为String类型

BuletoothMainActivity.UpdateRevMsg(message);//更新信息在显示文本框

is.close();//关闭输入流

使用服务端接收数据时,要先从客户端向服务端发起连接,只有接收到连接请求之后,才会返回一个BluetoothSocket对象。有BluetoothSocket对象才能获取到输入流。

开发一个APP的详细流程有什么?

开发一个APP的详细流程有什么

按照时间规定,我们分为以下七个阶段:

1、沟通阶段

仔细做软件致---电---幺伍扒---幺幺叁叁---驷柒驷驷进行用户访谈、需求分析、需求评审。企业的想要做什么样的APP,APP想要实现什么样子的功能,APP整体想要什么样的风格,APP想要适配哪个系统平台,进行系统化的交流与整理之后,交给技术团队去实现的。

2、评估致---电---幺伍扒---幺幺叁叁---驷柒驷驷阶段

了解用户使用环境、操作流程和功能需求之后,企业要对APP开发的一个工期所需的报价进行评估。

3、设计阶段

设计阶段包括:流程拓扑图、界面交互设计、高仿真原型设计与提供交互方案。设计是纯主观的,就带有一定的不确定因素。

4.视觉创意阶段

其中包含:编码规范、页面制作和技术嵌套、系统兼容、单元测试、修复BUG。之后可以用头脑风暴的形式,确立初步的创意方向与定位。接下来将会为用户提供创意表现、页面分格、创意说明等等内容。

5.技术开发阶段

进入开发阶段时,对项目本身进行评估,对研发周期、提测时间、预发布时间点进行初步的判断。然后才是对功能进行分解,进行开发准备,按照编码—系统集成—系统测试—BUG修复—交付的流程进行。

6、验收阶段

程序开发完成之后,要等待专业测试人员进行测试,测试内容包括APP性能、功能、内容等。如果测试无BUG,那么就可以验收了。

7、运营阶段

上线之后,APP即可进行运营。在运营期间,要进行推广与数据分析,即对数据报告与数据跟踪,为后期维护做好准备。

怎么开发app软件?

谷歌推出的AppInventorAndroidApp开发工具可以让你仅通过拖拉式的简单操作就可以创建自己的AndroidApp。对于那些为了特定目的想要动手尝试开发一个简单应用的用户。


名称栏目:android开发流程,android构建流程
文章网址:http://myzitong.com/article/hoejjc.html