Android手机之间的蓝牙通信的代码和原理,面试官如何提问面试者

		public void run() {

			// TODO Auto-generated method stub



			connectToServerSocket(device,

					UUID.fromString("a60f35f0-b93a-11de-8a39-08002009c666"));

		}

	}.start();



}







private void connectToServerSocket(BluetoothDevice device, UUID uuid) {

	try {

		BluetoothSocket clientSocket = device

				.createRfcommSocketToServiceRecord(uuid);

		transferSocket = clientSocket;

		// Block until server connection accepted.

		clientSocket.connect();

		runOnUiThread(new Runnable() {



			@Override

			public void run() {

				// TODO Auto-generated method stub

				Toast.makeText(MainActivity.this, "连接成功", Toast.LENGTH_LONG)

						.show();

			}

		});

		// Start listening for messages.



		listenForMessages(clientSocket, incoming);



		// Add a reference to the socket used to send messages.



	} catch (IOException e) {

		Log.e("BLUETOOTH", "Blueooth client I/O Exception", e);

	}

}



private void sendMessage(BluetoothSocket socket, String message) {

	OutputStream outStream;

	try {

		outStream = socket.getOutputStream();



		// Add a stop character.

		byte[] byteArray = (message + " ").getBytes();

		byteArray[byteArray.length - 1] = 0;



		outStream.write(byteArray);

	} catch (IOException e) {



	}

}



private boolean listening = false;



private void listenForMessages(BluetoothSocket socket,

		final StringBuilder incoming) {

	listening = true;



	int bufferSize = 1024;

	byte[] buffer = new byte[bufferSize];



	try {

		InputStream instream = socket.getInputStream();

		int bytesRead = -1;



		while (listening) {

			bytesRead = instream.read(buffer);

			if (bytesRead != -1) {

				String result = "";

				while ((bytesRead == bufferSize)

						&& (buffer[bufferSize - 1] != 0)) {

					result = result + new String(buffer, 0, bytesRead - 1);

					bytesRead = instream.read(buffer);

				}

				result = result + new String(buffer, 0, bytesRead - 1);

				incoming.append(result);

				Log.i("caohaidemo", "服务器说:" + incoming.toString());

				runOnUiThread(new Runnable() {



					@Override

					public void run() {

						// TODO Auto-generated method stub

						tv.setText(incoming.toString());

					}

				});

			}



		}

		// socket.close();

	} catch (IOException e) {



	} finally {

	}

}

}














![](https://blog.csdn.net/)  

  



2.服务端代码:



package com.example.mybloothserver;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.util.UUID;

import android.os.Bundle;

import android.app.Activity;

import android.bluetooth.BluetoothAdapter;

import android.bluetooth.BluetoothServerSocket;

import android.bluetooth.BluetoothSocket;

import android.util.Log;

import android.view.Menu;

import android.view.View;

import android.widget.EditText;

import android.widget.TextView;

import android.widget.Toast;

public class MainActivity extends Activity {

private EditText mEditText;

private StringBuffer sb;

private TextView tv;

private StringBuilder incoming = new StringBuilder();



@Override

protected void onCreate(Bundle savedInstanceState) {

	super.onCreate(savedInstanceState);

	setContentView(R.layout.activity_main);

	mEditText = (EditText) findViewById(R.id.et_id);

	sb = new StringBuffer();

	tv = (TextView) findViewById(R.id.tv_id);

	startServerSocket(BluetoothAdapter.getDefaultAdapter());

}



public void click(View view) {



	if (transferSocket != null) {

		String str = mEditText.getText().toString();

		sendMessage(transferSocket, "服务器说:" + str + "\n");

	}



}



private BluetoothSocket transferSocket;



private UUID startServerSocket(BluetoothAdapter bluetooth) {

	UUID uuid = UUID.fromString("a60f35f0-b93a-11de-8a39-08002009c666");

	String name = "bluetoothserver";



	try {

		final BluetoothServerSocket btserver = bluetooth

				.listenUsingRfcommWithServiceRecord(name, uuid);



		Thread acceptThread = new Thread(new Runnable() {

			public void run() {

				try {

					// Block until client connection established.

					final BluetoothSocket serverSocket = btserver.accept();

					transferSocket = serverSocket;

					runOnUiThread(new Runnable() {



						@Override

						public void run() {

							// TODO Auto-generated method stub

							Toast.makeText(MainActivity.this, "连接成功",

									Toast.LENGTH_LONG).show();

						}

					});

					// Start listening for messages.



					listenForMessages(serverSocket, incoming);

					// Add a reference to the socket used to send messages.



				} catch (IOException e) {

					Log.e("BLUETOOTH", "Server connection IO Exception", e);

				}

			}

		});

		acceptThread.start();

	} catch (IOException e) {

		Log.e("BLUETOOTH", "Socket listener IO Exception", e);

	}

	return uuid;

}



/**

 * Listing 16-8: Sending and receiving strings using Bluetooth Sockets

 */

private void sendMessage(BluetoothSocket socket, String message) {

	OutputStream outStream;

	try {

		outStream = socket.getOutputStream();



		// Add a stop character.

		byte[] byteArray = (message + " ").getBytes();

		byteArray[byteArray.length - 1] = 0;



		outStream.write(byteArray);

	} catch (IOException e) {



	}

}



private boolean listening = false;



private void listenForMessages(BluetoothSocket socket,

		final StringBuilder incoming) {

	listening = true;



	int bufferSize = 1024;

	byte[] buffer = new byte[bufferSize];



	try {

		InputStream instream = socket.getInputStream();

		int bytesRead = -1;



		while (listening) {

			bytesRead = instream.read(buffer);

			if (bytesRead != -1) {

				String result = "";

				while ((bytesRead == bufferSize)

						&& (buffer[bufferSize - 1] != 0)) {

					result = result + new String(buffer, 0, bytesRead - 1);

					bytesRead = instream.read(buffer);

				}

				result = result + new String(buffer, 0, bytesRead - 1);

				incoming.append(result);

				runOnUiThread(new Runnable() {



					@Override

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

总结:

面试是一个不断学习、不断自我提升的过程,有机会还是出去面面,至少能想到查漏补缺效果,而且有些知识点,可能你自以为知道,但让你说,并不一定能说得很好。

有些东西有压力才有动力,而学到的知识点,都是钱(因为技术人员大部分情况是根据你的能力来定级、来发薪水的),技多不压身。

附上我的面试各大专题整理: 面试指南,满满的都是干货,希望对大家有帮助!

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img
包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
[外链图片转存中…(img-WwHFjSnt-1712777330039)]

总结:

面试是一个不断学习、不断自我提升的过程,有机会还是出去面面,至少能想到查漏补缺效果,而且有些知识点,可能你自以为知道,但让你说,并不一定能说得很好。

有些东西有压力才有动力,而学到的知识点,都是钱(因为技术人员大部分情况是根据你的能力来定级、来发薪水的),技多不压身。

附上我的面试各大专题整理: 面试指南,满满的都是干货,希望对大家有帮助!
[外链图片转存中…(img-8ecdRfkM-1712777330040)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-I5cLhpYB-1712777330040)]

  • 23
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值