如果你有一个java.io.InputStream对象,你应该如何处理该对象并产生一个String?
假设我有一个InputStream包含文本数据,并且我想将其转换为a String,所以例如我可以将其写入日志文件.
采取InputStream并将其转换为最简单的方法是String什么?
public String convertStreamToString(InputStream is) {
// ???
}
Run Code Online (Sandbox Code Playgroud) 我需要通过蓝牙将字符串从PC传输到Android移动设备来获得帮助.Android移动设备应充当服务器并在设备屏幕上显示字符串消息.作为客户端的PC应该将字符串发送到移动设备.
我希望服务器对提取的字符串做出反应(通过蓝牙传输).这意味着在一侧服务器总是必须监听新的字符串到达,但另一方面仍然必须能够对这些消息作出反应(例如,从一个菜单导航到另一个菜单).
我尝试使用BlueCove(2.1.1)作为BluetoothStack(我将BlueCove中的jar作为库添加到两个项目中)并结合我在此处找到的服务器 - 客户端通信示例.
感谢user_CC使用RFComm服务器连接从服务器更新了代码:
public class RFCommServer extends Thread{
//based on java.util.UUID
private static UUID MY_UUID = UUID.fromString("446118f0-8b1e-11e2-9e96-0800200c9a66");
// The local server socket
private BluetoothServerSocket mmServerSocket;
// based on android.bluetooth.BluetoothAdapter
private BluetoothAdapter mAdapter;
private BluetoothDevice remoteDevice;
private Activity activity;
public RFCommServer(Activity activity) {
this.activity = activity;
}
public void run() {
BluetoothSocket socket = null;
mAdapter = BluetoothAdapter.getDefaultAdapter();
// Listen to the server socket if we're not connected
while (true) { …Run Code Online (Sandbox Code Playgroud) 我正在使用蓝牙聊天来连接和接收来自蓝牙设备的数据.
我使用以下代码来读取数据:
public void run() {
byte[] buffer = new byte[1024];
int bytes;
Log.v("MR", "start listening....");
// Keep listening to the InputStream while connected
while (true) {
try {
// Read from the InputStream
Log.d("MR", "buffer in try");
bytes = mmInStream.read(buffer);
Log.d("MR", "input stream :"+(new String(buffer)));
// Send the obtained bytes to the UI Activity
mHandler.obtainMessage(Conn.MESSAGE_READ, bytes, -1, buffer).sendToTarget();
Log.d("MR", "buffer after");
} catch (Exception e) {
Log.e("MR", "Error :"+e.getMessage());
//
connectionLost();
// break;
}
Log.d("MR", "buffer after while");
} …Run Code Online (Sandbox Code Playgroud) 我在使用Android上的蓝牙RFCOMM插槽时遇到了数据完整性问题.我连接没有任何问题,但我收到的数据是乱码,与发送的数据不同.数据由RS232设备通过手机连接的蓝牙适配器发送.适配器没有问题,因为如果我连接笔记本电脑,数据会被正确接收.
我的蓝牙连接是基于Android开发人员网站(http://developer.android.com/resources/samples/BluetoothChat/index.html)上的BluetoothChat示例应用程序处理的,没有任何更改.发送的数据是纯文本和控制字符(在显示给用户之前被删除).我遇到的具体问题是缺少一些文本,其中一些是重复的,等等.有趣的是,如果我连接到具有终端应用程序的计算机并输入,那么数据就可以正常传输.此外,如果我使用GetBlue应用程序连接到设备,数据将被正确接收.
所以我想问题是GetBlue可能做些什么来处理其蓝牙数据传输,或者是否有其他方式通过Android上的RFCOMM插槽接收蓝牙数据?