在我的Android应用程序中,我想通过蓝牙将字符串从一个设备发送到另一个设备.可用设备显示在列表视图中.... 我想发送配对的字符串......我无法建立设备之间的连接...任何人都可以帮助我建立连接并发送字符串...我有很多例子,但无法弄清楚文件传输需要什么东西.如果有人这样做,请帮助我.未完成的代码如下
public class MainActivity extends Activity
{
ToggleButton tb1;
Button tb2, tb3;
String tbstate1, tbstate2, tbstate3;
EditText textPhoneNo, textTo;
BluetoothAdapter myBTadapter;
ArrayAdapter<String> btArrayAdapter;
String tbstate;
ListView listDevicesFound;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tb1 = (ToggleButton) findViewById(R.id.m_m_btn);
tb2 = (Button) findViewById(R.id.sms_btn);
tb3 = (Button) findViewById(R.id.email_btn);
myBTadapter = BluetoothAdapter.getDefaultAdapter();
listDevicesFound = (ListView) findViewById(R.id.devicesfound);
btArrayAdapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1);
listDevicesFound.setAdapter(btArrayAdapter);
// listDevicesFound.setAdapter(detectedAdapter);
// listDevicesFound = new ListItemClicked();
// detectedAdapter.notifyDataSetChanged();
//
registerReceiver(ActionFoundReceiver, new IntentFilter(BluetoothDevice.ACTION_FOUND));
tb1.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
tbstate = tb1.getText().toString();
if (tbstate.equals("ON"))
{
if (myBTadapter == null)
{
tb1.setEnabled(false);
}
else
{
if (myBTadapter.isEnabled())
{
myBTadapter.startDiscovery();
// Toast.makeText(getApplicationContext(), "Bluetooth 1 ",Toast.LENGTH_LONG).show();
//myBTadapter.disable();
}
else
{
myBTadapter.enable();
myBTadapter.startDiscovery();
//Toast.makeText(getApplicationContext(), "Bluetooth 2 ",Toast.LENGTH_LONG).show();
}
}
// check the status and set the button text
// accordingly
}
else
{
myBTadapter.disable();
btArrayAdapter.clear();
/*if (myBTadapter.isEnabled())
{
myBTadapter.disable();
}
else
{
Toast.makeText(getApplicationContext(), "Bluetooth 3 ",Toast.LENGTH_LONG).show();
} */
}
}
}
);
}
private final BroadcastReceiver ActionFoundReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
// TODO Auto-generated method stub
String action = intent.getAction();
if (BluetoothDevice.ACTION_FOUND.equals(action))
{
BluetoothDevice device = intent .getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
btArrayAdapter.add(device.getName() + "\n"+ device.getAddress());
btArrayAdapter.notifyDataSetChanged();
}
}
};
}
Run Code Online (Sandbox Code Playgroud)
小智 6
如果您通过蓝牙发送,则需要创建一个UUID对象并使用它来打开套接字连接.我用一个线程来收听即将到来的数据.您还需要一个功能来打开和关闭蓝牙连接.
void openBT() throws IOException {
UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb"); //Standard //SerialPortService ID
mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid);
mmSocket.connect();
mmOutputStream = mmSocket.getOutputStream();
mmInputStream = mmSocket.getInputStream();
beginListenForData();
myLabel.setText("Bluetooth Opened");
}
void beginListenForData() {
final Handler handler = new Handler();
final byte delimiter = 10; //This is the ASCII code for a newline character
stopWorker = false;
readBufferPosition = 0;
readBuffer = new byte[1024];
workerThread = new Thread(new Runnable() {
public void run() {
while(!Thread.currentThread().isInterrupted() && !stopWorker) {
try {
int bytesAvailable = mmInputStream.available();
if(bytesAvailable > 0) {
byte[] packetBytes = new byte[bytesAvailable];
mmInputStream.read(packetBytes);
for(int i=0;i<bytesAvailable;i++) {
byte b = packetBytes[i];
if(b == delimiter) {
byte[] encodedBytes = new byte[readBufferPosition];
System.arraycopy(readBuffer, 0, encodedBytes, 0, encodedBytes.length);
final String data = new String(encodedBytes, "US-ASCII");
readBufferPosition = 0;
handler.post(new Runnable() {
public void run() {
myLabel.setText(data);
}
});
}else {
readBuffer[readBufferPosition++] = b;
}
}
}
}catch (IOException ex) {
stopWorker = true;
}
}
}
});
workerThread.start();
}
void sendData() throws IOException {
String msg = myTextbox.getText().toString();
msg += "\n";
//mmOutputStream.write(msg.getBytes());
mmOutputStream.write('A');
myLabel.setText("Data Sent");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19179 次 |
| 最近记录: |