佛山网站建设和维护,w98免费服务器,杭州的互联网企业,wordpress 视频 播放器插件制作控制蓝牙小车app 想制作一个蓝牙小车#xff0c;通过手机app程序操控小车运行#xff0c;制作分三个部分#xff08;app制作#xff0c;蓝牙小车硬件制作#xff0c;小车程序制作#xff09;#xff0c;先完成第一个部分app制作#xff0c;本次app是通过androidstu…制作控制蓝牙小车app 想制作一个蓝牙小车通过手机app程序操控小车运行制作分三个部分app制作蓝牙小车硬件制作小车程序制作先完成第一个部分app制作本次app是通过androidstudio软件来制作安卓应用程序 一、添加权限
在AndroidManifest.xml文件中添加权限 !-- 蓝牙操作权限 --uses-permission android:nameandroid.permission.BLUETOOTH/!-- 蓝牙配对权限--uses-permission android:nameandroid.permission.BLUETOOTH_ADMIN/!--仅在支持BLE蓝牙4.0及以上的设备上运行--uses-feature android:nameandroid.hardware.bluetooth_le android:requiredtrue/!--如果Android6.0蓝牙搜索不到设备需要补充以下两个权限--uses-permission android:nameandroid.permission.ACCESS_FINE_LOCATION/uses-permission android:nameandroid.permission.ACCESS_COARSE_LOCATION/uses-permission android:nameandroid.permission.BLUETOOTH_CONNECT /二、设计界面
这里需要新建一个连接蓝牙的界面以及活动这里新建的连接蓝牙活动取名Bluetooth_set
主界面 连接蓝牙界面 界面设计比较简单无非就是布局和控件id设置
三、功能实现
MainActivity.java文件代码
package com.example.myapplication_ble_hc7;import androidx.appcompat.app.AppCompatActivity;import android.bluetooth.BluetoothAdapter;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;import java.io.IOException;import static com.example.myapplication_ble_hc7.Bluetooth_set.bluetoothSocket;public class MainActivity extends AppCompatActivity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button_set findViewById(R.id.button_set);button_set.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {Intent intent new Intent(MainActivity.this, Bluetooth_set.class);startActivity(intent);//跳转到设置界面}});final Button button_go findViewById(R.id.button_go);button_go.setBackgroundColor(Color.GREEN);final Button button_left findViewById(R.id.button_left);button_left.setBackgroundColor(Color.GREEN);final Button button_right findViewById(R.id.button_right);button_right.setBackgroundColor(Color.GREEN);final Button button_stop findViewById(R.id.button_back);button_stop.setBackgroundColor(Color.GREEN);TextView textView findViewById(R.id.textView2);if(bluetoothSocketnull){textView.setText(蓝牙未经连接);textView.setBackgroundColor(Color.RED);}else {textView.setText(蓝牙已经连接);textView.setBackgroundColor(Color.BLUE);}button_go.setOnTouchListener(new View.OnTouchListener() {Overridepublic boolean onTouch(View view, MotionEvent motionEvent) {switch (motionEvent.getAction()){case MotionEvent.ACTION_DOWN:send(1);button_go.setBackgroundColor(Color.RED);break;case MotionEvent.ACTION_UP:send(0);button_go.setBackgroundColor(Color.GREEN);break;}return true;}});button_left.setOnTouchListener(new View.OnTouchListener() {Overridepublic boolean onTouch(View view, MotionEvent motionEvent) {switch (motionEvent.getAction()){case MotionEvent.ACTION_DOWN:send(2);button_left.setBackgroundColor(Color.RED);break;case MotionEvent.ACTION_UP:send(0);button_left.setBackgroundColor(Color.GREEN);break;}return true;}});button_right.setOnTouchListener(new View.OnTouchListener() {Overridepublic boolean onTouch(View view, MotionEvent motionEvent) {switch (motionEvent.getAction()){case MotionEvent.ACTION_DOWN:send(3);button_right.setBackgroundColor(Color.RED);break;case MotionEvent.ACTION_UP:send(0);button_right.setBackgroundColor(Color.GREEN);break;}return true;}});button_stop.setOnTouchListener(new View.OnTouchListener() {Overridepublic boolean onTouch(View view, MotionEvent motionEvent) {switch (motionEvent.getAction()){case MotionEvent.ACTION_DOWN:send(4);button_stop.setBackgroundColor(Color.RED);break;case MotionEvent.ACTION_UP:send(0);button_stop.setBackgroundColor(Color.GREEN);break;}return true;}});}public void send(int intData){if(bluetoothSocketnull) {//先判断是否连接Toast.makeText(MainActivity.this,设备未连接,Toast.LENGTH_SHORT).show();}else {try {bluetoothSocket.getOutputStream().write(intData);//建立数据库} catch (IOException e) { }}}
}在Bluetooth_set.java文件中代码
package com.example.myapplication_ble_hc7;import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;import android.annotation.SuppressLint;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;import java.io.IOException;
import java.util.ArrayList;
import java.util.Set;
import java.util.UUID;public class Bluetooth_set extends AppCompatActivity {public static BluetoothSocket bluetoothSocket;UUID MY_UUIDUUID.fromString(00001101-0000-1000-8000-00805f9b34fb);//符合uuid格式就行ArrayListString ble_list new ArrayList();//创建数组列表ArrayListBluetoothDevice blenew ArrayList();//用来存放蓝牙设备SuppressLint(MissingPermission)Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_bluetooth_set);Button button_back findViewById(R.id.button_back);ListView listView findViewById(R.id.ble_list);button_back.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View view) {Intent intent new Intent(Bluetooth_set.this, MainActivity.class);startActivity(intent);//返回到主界面}});BluetoothAdapter bluetoothAdapter BluetoothAdapter.getDefaultAdapter();//获取设备if (bluetoothAdapter null) {//判断设备是否支持蓝牙Toast.makeText(Bluetooth_set.this, 注意设备不支持蓝牙, Toast.LENGTH_SHORT).show();} else {Toast.makeText(Bluetooth_set.this, 设备支持蓝牙, Toast.LENGTH_SHORT).show();}if (!bluetoothAdapter.isEnabled()) { //判断设备是否打开蓝牙// bluetoothAdapter.enable();//打开蓝牙Intent enableBtIntent new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);startActivityForResult(enableBtIntent,1); //通过意图打开蓝牙}SetBluetoothDevice device bluetoothAdapter.getBondedDevices();//获取已经配对的设备并存放到列表if(device.size()0){for(BluetoothDevice mdevice:device){ble.add(mdevice);//添加蓝牙ble_list.add(mdevice.getName());//将获取的蓝牙名称添加到列表}}ArrayAdapterString view_listnew ArrayAdapter(this,android.R.layout.simple_list_item_1,ble_list);//创建列表显示的适配器listView.setAdapter(view_list);//显示在列表里面listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {Overridepublic void onItemClick(AdapterView? adapterView, View view, int i, long l) {// BluetoothDevice bluetoothDevice ble.get(i);//获取需要单击的蓝牙try {bluetoothSocketble.get(i).createInsecureRfcommSocketToServiceRecord(MY_UUID);//获取需要单击的蓝牙,并且连接填入UUIDbluetoothSocket.connect();//蓝牙连接} catch (IOException e) {}Toast.makeText(Bluetooth_set.this, 蓝牙ble.get(i).getName()已经连接, Toast.LENGTH_SHORT).show();}});}
}四、效果呈现
把蓝牙先连接到电脑 安卓设备连接蓝牙并发送数据下面是接收数据情况我这边分别使用0,1,2,3,4表示停、前进、左转、右转、后退 第一阶段app程序暂时通过验证接下来制作蓝牙小车