Android开发-蓝牙遥控器(字符串形式发送)-应用例程

Android开发-蓝⽛遥控器(字符串形式发送)-应⽤例程⼀、例程简介
1、应⽤界⾯图(主界⾯、设置界⾯)
2、实现功能
(1)打开应⽤,显⽰主界⾯,检测蓝⽛功能是否打开,否则询问打开;
(2)打开蓝⽛功能后,点击“连接设备:”下的按钮选择已匹配的蓝⽛设备进⾏连接;
(3)若蓝⽛设备未匹配,可点击旁边的 […] 按钮打开系统蓝⽛设置界⾯,进⾏蓝⽛匹配;
(4)点击中央的上、下、左、右和中间按钮,可发送不同的蓝⽛字符串消息;
(5)蓝⽛消息内容可通过点击 [设置] 按钮在设置界⾯中设置,设置的数据重启应⽤后依然有效;
(6)其中,中间按钮具有长按按下、长按释放和点击三种不同效果;
(7)本应⽤还附带来电监听功能,有来电时,会⾃动发送蓝⽛消息;
(8)点击 [退出] 按钮,关闭蓝⽛连接,并且关闭安卓设备蓝⽛功能。
⼆、⼯程⽬录
三、主界⾯代码
MainActivity.java
智能蓝牙遥控器buletoothdemo;
buletoothdemo;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
t.Context;
t.DialogInterface;
t.Intent;
t.SharedPreferences;
import android.os.Handler;
import android.os.Message;
import android.provider.Settings;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
lephony.PhoneStateListener;
lephony.TelephonyManager;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Set;
import java.util.UUID;
public class MainActivity extends AppCompatActivity {
public final static String TAG = "MainActivity";
private Button bdevice;
private EditText emessage;
private Button btmid;
private BluetoothAdapter ba;
private ArrayList<String> lname = new ArrayList<>();
private ArrayList<String> laddress = new ArrayList<>();
private String sdname;
private String sdaddress;
private BluetoothSocket bsocket = null;
private OutputStream ostream = null;
private InputStream istream = null;
private static final UUID SerialPort_UUID = UUID.fromString(            "00001101-0000-1000-8000-00805F9B34FB");
private Handler hd;
private ReceiveThread rt;
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_main);
bdevice = (Button) findViewById(R.id.btn_dev_name);
emessage = (EditText) findViewById(_message);        btmid = (Button)findViewById(R.id.btn_mid);
btmid.setOnTouchListener(new MidOnTouchListener());
ba = DefaultAdapter();
hd = new Handler() {
public void handleMessage(Message msg)
{
super.handleMessage(msg);
if(msg.what == 111) {
SharedPreferences preferences = getSharedPreferences(                            "messages", MODE_PRIVATE);
String ms = String("msg_mlg", "5");
SendStr(ms);
}else if(msg.what == 112) {
emessage.String((byte[])msg.obj));
emessage.setEnabled(true);
}
}
};
// When "Device does not support Bluetooth"
if (ba == null) {
Toast.makeText(getApplicationContext(),
getResources().getString(R.string.dev_nsup_bt),
Toast.LENGTH_SHORT).show();
}
/
/ When Bluetooth hasn't opened, enable it
if (!ba.isEnabled()) {
Intent turnOn = new Intent(
BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(turnOn, 0);
}
}
// Function to send Bluetooth message
public void SendStr(String str) {
byte[] bf = new byte[33];
bf = Bytes();
if((!str.equals("")) && (bsocket!=null)) {
try {
ostream = OutputStream();
ostream.write(bf);
ostream.write('\0');    // Send an ending sign
} catch (IOException e) {
e.printStackTrace();
}
try {
if (ostream != null) {
ostream.flush();
}
} catch (IOException e) {
e.printStackTrace();
}
emessage.setText("");
}
}
// Thread to receive Bluetooth message
public class ReceiveThread extends Thread {
BluetoothSocket tsocket;
public ReceiveThread(BluetoothSocket socket) {
this.tsocket = socket;
InputStream tistream = null;
try {
tistream = InputStream();
} catch (IOException e) {
e.printStackTrace();
}
istream = tistream;
}
@Override
public void run() {
byte[] buffer = new byte[32];
String str;
// Keep on receiving
while (true) {
try {
str = new String(buffer,"UTF-8");
buffer = new byte[32];
Message msg = hd.obtainMessage(112,str);
hd.sendMessage(msg);
} catch (IOException e) {
try {
if (istream != null) {
istream.close();
}
break;
} catch (IOException e1) {
e1.printStackTrace();
}
}
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
// Listener to catch the RINGING STATE
class MyPhoneStateListener extends PhoneStateListener {
@Override
public void onCallStateChanged(int state, String incomingNumber) {            Log.i(TAG, "in coming number:" + incomingNumber);
if(state == TelephonyManager.CALL_STATE_RINGING) {
SharedPreferences preferences = getSharedPreferences(
"messages", MODE_PRIVATE);
String ms = String("msg_ring", "0");
SendStr(ms);
}
}
}
// Function of the ChooseDev Button
public void ChooseDevOnClick(View Source) {
Set<BluetoothDevice> sdevices;
/
/ Clear data of scanning
lname.clear();
laddress.clear();
// Get data of boned devices
sdevices = ba.getBondedDevices();
if (sdevices.size() > 0) {
for (BluetoothDevice btd : sdevices) {

本文发布于:2024-09-20 22:21:36,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/354592.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:点击   设置   功能   按钮   打开   遥控器
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议