add QrScanner , modify PrinterBle class
This commit is contained in:
parent
2197e6ab98
commit
8a081b144a
@ -2,6 +2,7 @@
|
|||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ProjectModuleManager">
|
<component name="ProjectModuleManager">
|
||||||
<modules>
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/BTDemo.iml" filepath="$PROJECT_DIR$/BTDemo.iml" />
|
||||||
<module fileurl="file://D:\Project\ble-android-demo\BTDemo.iml" filepath="D:\Project\ble-android-demo\BTDemo.iml" />
|
<module fileurl="file://D:\Project\ble-android-demo\BTDemo.iml" filepath="D:\Project\ble-android-demo\BTDemo.iml" />
|
||||||
<module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />
|
<module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />
|
||||||
<module fileurl="file://D:\Project\ble-android-demo\app\app.iml" filepath="D:\Project\ble-android-demo\app\app.iml" />
|
<module fileurl="file://D:\Project\ble-android-demo\app\app.iml" filepath="D:\Project\ble-android-demo\app\app.iml" />
|
||||||
|
@ -32,4 +32,5 @@ dependencies {
|
|||||||
androidTestImplementation 'com.android.support.test:runner:1.0.0'
|
androidTestImplementation 'com.android.support.test:runner:1.0.0'
|
||||||
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.0'
|
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.0'
|
||||||
implementation 'org.apache.commons:commons-lang3:3.6'
|
implementation 'org.apache.commons:commons-lang3:3.6'
|
||||||
|
implementation 'com.journeyapps:zxing-android-embedded:3.5.0'
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
<uses-permission android:name="android.permission.BLUETOOTH" />
|
<uses-permission android:name="android.permission.BLUETOOTH" />
|
||||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
|
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
|
||||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
|
||||||
|
<uses-permission android:name="android.permission.CAMERA"/>
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:allowBackup="true"
|
android:allowBackup="true"
|
||||||
|
@ -3,11 +3,16 @@ package xyz.mtfos.btdemo
|
|||||||
import android.Manifest
|
import android.Manifest
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
|
import android.content.Intent
|
||||||
import android.content.pm.PackageManager
|
import android.content.pm.PackageManager
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.os.Handler
|
import android.os.Handler
|
||||||
|
import android.text.Editable
|
||||||
import android.widget.*
|
import android.widget.*
|
||||||
|
import com.google.zxing.integration.android.IntentIntegrator
|
||||||
|
import com.google.zxing.integration.android.IntentResult
|
||||||
|
import org.json.JSONObject
|
||||||
import xyz.mtfos.btdemo.objectTool.bind
|
import xyz.mtfos.btdemo.objectTool.bind
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -26,6 +31,11 @@ class MainActivity : Activity() {
|
|||||||
val alignBtn: Button by bind(R.id.btn_align)
|
val alignBtn: Button by bind(R.id.btn_align)
|
||||||
val sizeBtn: Button by bind(R.id.btn_size)
|
val sizeBtn: Button by bind(R.id.btn_size)
|
||||||
|
|
||||||
|
val inmac: EditText by bind(R.id.inmac)
|
||||||
|
val inservice: EditText by bind(R.id.inservice)
|
||||||
|
val incharacteristic: EditText by bind(R.id.incharacteristic)
|
||||||
|
val scanSetting: Button by bind(R.id.scansetting)
|
||||||
|
|
||||||
val addHR: Button by bind(R.id.addHR)
|
val addHR: Button by bind(R.id.addHR)
|
||||||
val addNL: Button by bind(R.id.addNL)
|
val addNL: Button by bind(R.id.addNL)
|
||||||
val addTAB: Button by bind(R.id.addTAB)
|
val addTAB: Button by bind(R.id.addTAB)
|
||||||
@ -51,7 +61,7 @@ class MainActivity : Activity() {
|
|||||||
connectBtn.isEnabled = true
|
connectBtn.isEnabled = true
|
||||||
disconnectBtn.isEnabled = false
|
disconnectBtn.isEnabled = false
|
||||||
|
|
||||||
ble = PrinterBle(this@MainActivity, "B8:27:EB:21:C2:1A", "dd535b71-8f05-4e30-beb0-6fa7ea3dfc3e", "00000001-8f05-4e30-beb0-6fa7ea3dfc3e")
|
ble = PrinterBle(this@MainActivity)
|
||||||
|
|
||||||
ble?.setOnStateChangeListener {
|
ble?.setOnStateChangeListener {
|
||||||
System.out.println("Now State is >>>> " + it)
|
System.out.println("Now State is >>>> " + it)
|
||||||
@ -76,6 +86,10 @@ class MainActivity : Activity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
scanSetting.setOnClickListener {
|
||||||
|
IntentIntegrator(this@MainActivity).initiateScan()
|
||||||
|
}
|
||||||
|
|
||||||
ble?.setOnNotifyListener {
|
ble?.setOnNotifyListener {
|
||||||
System.out.println("Get Notify :::::: " + it)
|
System.out.println("Get Notify :::::: " + it)
|
||||||
}
|
}
|
||||||
@ -107,8 +121,9 @@ class MainActivity : Activity() {
|
|||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||||
permissionCheck += this@MainActivity.checkSelfPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION)
|
permissionCheck += this@MainActivity.checkSelfPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION)
|
||||||
permissionCheck += this@MainActivity.checkSelfPermission(android.Manifest.permission.ACCESS_FINE_LOCATION)
|
permissionCheck += this@MainActivity.checkSelfPermission(android.Manifest.permission.ACCESS_FINE_LOCATION)
|
||||||
|
permissionCheck += this@MainActivity.checkSelfPermission(android.Manifest.permission.CAMERA)
|
||||||
if (permissionCheck != 0) {
|
if (permissionCheck != 0) {
|
||||||
requestPermissions(arrayOf(Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION), 111)
|
requestPermissions(arrayOf(Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.CAMERA), 111)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -138,6 +153,9 @@ class MainActivity : Activity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
connectBtn.setOnClickListener {
|
connectBtn.setOnClickListener {
|
||||||
|
ble?.macAddr = inmac.text.toString()
|
||||||
|
ble?.serviceUUID = inservice.text.toString()
|
||||||
|
ble?.characteristicUUID = incharacteristic.text.toString()
|
||||||
scanConnect()
|
scanConnect()
|
||||||
}
|
}
|
||||||
disconnectBtn.setOnClickListener {
|
disconnectBtn.setOnClickListener {
|
||||||
@ -149,6 +167,32 @@ class MainActivity : Activity() {
|
|||||||
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
|
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||||
|
super.onActivityResult(requestCode, resultCode, data)
|
||||||
|
val qrRes: IntentResult? = IntentIntegrator.parseActivityResult(requestCode, resultCode, data)
|
||||||
|
if (qrRes != null) {
|
||||||
|
val content: String? = qrRes?.contents
|
||||||
|
if (content != null) {
|
||||||
|
System.out.println("GET QRCODE :: $content")
|
||||||
|
try {
|
||||||
|
val json: JSONObject = JSONObject(content)
|
||||||
|
if(json.has("mac") && json["mac"] is String){
|
||||||
|
inmac.text = Editable.Factory.getInstance().newEditable(json.getString("mac"))
|
||||||
|
}
|
||||||
|
if(json.has("service") && json["service"] is String) {
|
||||||
|
inservice.text = Editable.Factory.getInstance().newEditable(json.getString("service"))
|
||||||
|
}
|
||||||
|
if(json.has("characteristic") && json["characteristic"] is String) {
|
||||||
|
incharacteristic.text = Editable.Factory.getInstance().newEditable(json.getString("characteristic"))
|
||||||
|
}
|
||||||
|
} catch (e: Exception) {
|
||||||
|
e.printStackTrace()
|
||||||
|
Toast.makeText(this@MainActivity, "Parser Error", Toast.LENGTH_SHORT).show()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun onStop() {
|
override fun onStop() {
|
||||||
super.onStop()
|
super.onStop()
|
||||||
disconnect()
|
disconnect()
|
||||||
|
@ -89,6 +89,10 @@ public class PrinterBle {
|
|||||||
void onNotify(String msg);
|
void onNotify(String msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public PrinterBle(Context ctx) {
|
||||||
|
this(ctx, "", "", "");
|
||||||
|
}
|
||||||
|
|
||||||
public PrinterBle(Context ctx, String macAddr, String serviceUUID, String characteristicUUID) {
|
public PrinterBle(Context ctx, String macAddr, String serviceUUID, String characteristicUUID) {
|
||||||
this.ctx = ctx;
|
this.ctx = ctx;
|
||||||
this.macAddr = macAddr;
|
this.macAddr = macAddr;
|
||||||
@ -127,9 +131,9 @@ public class PrinterBle {
|
|||||||
@Override
|
@Override
|
||||||
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
|
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
|
||||||
super.onServicesDiscovered(gatt, status);
|
super.onServicesDiscovered(gatt, status);
|
||||||
if (status == BluetoothGatt.GATT_SUCCESS) {
|
if (status == BluetoothGatt.GATT_SUCCESS && !serviceUUID.isEmpty()) {
|
||||||
BluetoothGattService btService = mBtGatt.getService(UUID.fromString(serviceUUID));
|
BluetoothGattService btService = mBtGatt.getService(UUID.fromString(serviceUUID));
|
||||||
if (btService != null) {
|
if (btService != null && !characteristicUUID.isEmpty()) {
|
||||||
printerCharacteristic = btService.getCharacteristic(UUID.fromString(characteristicUUID));
|
printerCharacteristic = btService.getCharacteristic(UUID.fromString(characteristicUUID));
|
||||||
// set notify enable
|
// set notify enable
|
||||||
mBtGatt.setCharacteristicNotification(printerCharacteristic, true);
|
mBtGatt.setCharacteristicNotification(printerCharacteristic, true);
|
||||||
@ -242,7 +246,7 @@ public class PrinterBle {
|
|||||||
};
|
};
|
||||||
|
|
||||||
public void startScan() {
|
public void startScan() {
|
||||||
if (mAdapter == null) return;
|
if (mAdapter == null || macAddr.isEmpty() || serviceUUID.isEmpty() || characteristicUUID.isEmpty()) return;
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && mLeScanner == null) return;
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && mLeScanner == null) return;
|
||||||
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||||
@ -439,6 +443,30 @@ public class PrinterBle {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getMacAddr() {
|
||||||
|
return macAddr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMacAddr(String macAddr) {
|
||||||
|
this.macAddr = macAddr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getServiceUUID() {
|
||||||
|
return serviceUUID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setServiceUUID(String serviceUUID) {
|
||||||
|
this.serviceUUID = serviceUUID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCharacteristicUUID() {
|
||||||
|
return characteristicUUID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCharacteristicUUID(String characteristicUUID) {
|
||||||
|
this.characteristicUUID = characteristicUUID;
|
||||||
|
}
|
||||||
|
|
||||||
public ArrayList<String> getDataQueue() {
|
public ArrayList<String> getDataQueue() {
|
||||||
return dataQueue;
|
return dataQueue;
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,78 @@
|
|||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="BTMac:" />
|
||||||
|
|
||||||
|
<EditText
|
||||||
|
android:id="@+id/inmac"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:hint="input bluetooth mac" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="BTService:" />
|
||||||
|
|
||||||
|
<EditText
|
||||||
|
android:id="@+id/inservice"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:hint="input service uuid" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="BTCharacteristic:" />
|
||||||
|
|
||||||
|
<EditText
|
||||||
|
android:id="@+id/incharacteristic"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:hint="input characteristic uuid" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="right"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/scansetting"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="scanSetting"
|
||||||
|
android:textAllCaps="false" />
|
||||||
|
</LinearLayout>
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@ -24,6 +96,10 @@
|
|||||||
android:textAllCaps="false" />
|
android:textAllCaps="false" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<ScrollView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/mainlay"
|
android:id="@+id/mainlay"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@ -145,18 +221,15 @@
|
|||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<ScrollView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent">
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/preview"
|
android:id="@+id/preview"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content" />
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
Loading…
Reference in New Issue
Block a user