Skip to content

Commit d21867a

Browse files
committed
Bluetooth printer selection refactoring
1 parent f96d444 commit d21867a

4 files changed

Lines changed: 62 additions & 84 deletions

File tree

app/src/main/java/com/dantsu/thermalprinter/MainActivity.java

Lines changed: 32 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,10 @@
2222
import android.view.View;
2323
import android.widget.Button;
2424
import android.widget.EditText;
25-
import android.widget.Toast;
2625

2726
import com.dantsu.escposprinter.EscPosPrinter;
2827
import com.dantsu.escposprinter.connection.DeviceConnection;
2928
import com.dantsu.escposprinter.connection.bluetooth.BluetoothConnection;
30-
import com.dantsu.escposprinter.connection.bluetooth.BluetoothConnections;
3129
import com.dantsu.escposprinter.connection.bluetooth.BluetoothPrintersConnections;
3230
import com.dantsu.escposprinter.connection.tcp.TcpConnection;
3331
import com.dantsu.escposprinter.connection.usb.UsbConnection;
@@ -52,39 +50,32 @@ public class MainActivity extends AppCompatActivity {
5250
protected void onCreate(Bundle savedInstanceState) {
5351
super.onCreate(savedInstanceState);
5452
setContentView(R.layout.activity_main);
55-
Button button = (Button) this.findViewById(R.id.button_bluetooth);
53+
Button button = (Button) this.findViewById(R.id.button_bluetooth_browse);
5654
button.setOnClickListener(new View.OnClickListener() {
5755
@Override
5856
public void onClick(View view) {
59-
printBluetooth();
60-
}
61-
});
62-
button = (Button) this.findViewById(R.id.button_usb);
63-
button.setOnClickListener(new View.OnClickListener() {
64-
@Override
65-
public void onClick(View view) {
66-
printUsb();
57+
browseBluetoothDevice();
6758
}
6859
});
69-
button = (Button) this.findViewById(R.id.button_tcp);
60+
button = (Button) findViewById(R.id.button_bluetooth);
7061
button.setOnClickListener(new View.OnClickListener() {
7162
@Override
7263
public void onClick(View view) {
73-
printTcp();
64+
printBluetooth();
7465
}
7566
});
76-
button = (Button) this.findViewById(R.id.button_browse);
67+
button = (Button) this.findViewById(R.id.button_usb);
7768
button.setOnClickListener(new View.OnClickListener() {
7869
@Override
7970
public void onClick(View view) {
80-
browseBluetoothDevice();
71+
printUsb();
8172
}
8273
});
83-
button = (Button) findViewById(R.id.button_bluetooth2);
74+
button = (Button) this.findViewById(R.id.button_tcp);
8475
button.setOnClickListener(new View.OnClickListener() {
8576
@Override
8677
public void onClick(View view) {
87-
printBySelectedBluetoothDevice();
78+
printTcp();
8879
}
8980
});
9081

@@ -97,34 +88,6 @@ public void onClick(View view) {
9788

9889
public static final int PERMISSION_BLUETOOTH = 1;
9990

100-
public void printBluetooth() {
101-
if (ContextCompat.checkSelfPermission(this, Manifest.permission.BLUETOOTH) != PackageManager.PERMISSION_GRANTED) {
102-
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.BLUETOOTH}, MainActivity.PERMISSION_BLUETOOTH);
103-
} else {
104-
//first pair bluetooth device print
105-
//synchronized print
106-
//this.printIt(BluetoothPrintersConnections.selectFirstPaired());
107-
//asynchronized print
108-
new AsyncBluetoothEscPosPrint(this).execute(this.getAsyncEscPosPrinter(null));
109-
110-
}
111-
}
112-
113-
public void printBySelectedBluetoothDevice(){
114-
if (ContextCompat.checkSelfPermission(this, Manifest.permission.BLUETOOTH) != PackageManager.PERMISSION_GRANTED) {
115-
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.BLUETOOTH}, MainActivity.PERMISSION_BLUETOOTH);
116-
} else {
117-
//select device for print
118-
if(selectedDevice != null){
119-
// this.printIt(selectedDevice); //synchronized print
120-
new AsyncBluetoothEscPosPrint(this).execute(this.getAsyncEscPosPrinter(selectedDevice)); //asynchronized print
121-
}else{
122-
Toast.makeText(this,"Please Select A Device",Toast.LENGTH_SHORT).show();
123-
}
124-
}
125-
126-
}
127-
12891
@Override
12992
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, int[] grantResults) {
13093
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
@@ -137,25 +100,31 @@ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permis
137100
}
138101

139102
private BluetoothConnection selectedDevice;
140-
public void browseBluetoothDevice(){
141-
final BluetoothConnection[] bluetoothDevicesList = (new BluetoothConnections()).getList();
142103

143-
if(bluetoothDevicesList != null){
144-
int i = 0;
145-
String[] items = new String[bluetoothDevicesList.length];
104+
public void browseBluetoothDevice() {
105+
final BluetoothConnection[] bluetoothDevicesList = (new BluetoothPrintersConnections()).getList();
146106

147-
for(BluetoothConnection device : bluetoothDevicesList){
148-
items[i++] = device.getDevice().getName();
107+
if (bluetoothDevicesList != null) {
108+
final String[] items = new String[bluetoothDevicesList.length + 1];
109+
items[0] = "Default printer";
110+
int i = 0;
111+
for (BluetoothConnection device : bluetoothDevicesList) {
112+
items[++i] = device.getDevice().getName();
149113
}
150114

151115
AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this);
152-
alertDialog.setTitle("Pick Device");
116+
alertDialog.setTitle("Bluetooth printer selection");
153117
alertDialog.setItems(items, new DialogInterface.OnClickListener() {
154118
@Override
155119
public void onClick(DialogInterface dialogInterface, int i) {
156-
selectedDevice = bluetoothDevicesList[i];
157-
Button button = (Button) findViewById(R.id.button_bluetooth2);
158-
button.setText("Print By: "+ selectedDevice.getDevice().getName());
120+
int index = i - 1;
121+
if(index == -1) {
122+
selectedDevice = null;
123+
} else {
124+
selectedDevice = bluetoothDevicesList[index];
125+
}
126+
Button button = (Button) findViewById(R.id.button_bluetooth_browse);
127+
button.setText(items[i]);
159128
}
160129
});
161130

@@ -164,9 +133,15 @@ public void onClick(DialogInterface dialogInterface, int i) {
164133
alert.show();
165134

166135
}
167-
168136
}
169137

138+
public void printBluetooth() {
139+
if (ContextCompat.checkSelfPermission(this, Manifest.permission.BLUETOOTH) != PackageManager.PERMISSION_GRANTED) {
140+
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.BLUETOOTH}, MainActivity.PERMISSION_BLUETOOTH);
141+
} else {
142+
new AsyncBluetoothEscPosPrint(this).execute(this.getAsyncEscPosPrinter(selectedDevice));
143+
}
144+
}
170145

171146
/*==============================================================================================
172147
===========================================USB PART=============================================

app/src/main/java/com/dantsu/thermalprinter/async/AsyncBluetoothEscPosPrint.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import com.dantsu.escposprinter.connection.DeviceConnection;
66
import com.dantsu.escposprinter.connection.bluetooth.BluetoothPrintersConnections;
7+
import com.dantsu.escposprinter.exceptions.EscPosConnectionException;
78

89
public class AsyncBluetoothEscPosPrint extends AsyncEscPosPrint {
910
public AsyncBluetoothEscPosPrint(Context context) {
@@ -16,19 +17,24 @@ protected Integer doInBackground(AsyncEscPosPrinter... printersData) {
1617
}
1718

1819
AsyncEscPosPrinter printerData = printersData[0];
19-
2020
DeviceConnection deviceConnection = printerData.getPrinterConnection();
2121

22-
if(deviceConnection == null) {
23-
this.publishProgress(AsyncEscPosPrint.PROGRESS_CONNECTING);
22+
this.publishProgress(AsyncEscPosPrint.PROGRESS_CONNECTING);
2423

24+
if (deviceConnection == null) {
2525
printersData[0] = new AsyncEscPosPrinter(
2626
BluetoothPrintersConnections.selectFirstPaired(),
2727
printerData.getPrinterDpi(),
2828
printerData.getPrinterWidthMM(),
2929
printerData.getPrinterNbrCharactersPerLine()
3030
);
3131
printersData[0].setTextToPrint(printerData.getTextToPrint());
32+
} else {
33+
try {
34+
deviceConnection.connect();
35+
} catch (EscPosConnectionException e) {
36+
e.printStackTrace();
37+
}
3238
}
3339

3440
return super.doInBackground(printersData);

app/src/main/java/com/dantsu/thermalprinter/async/AsyncEscPosPrint.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import com.dantsu.escposprinter.EscPosCharsetEncoding;
99
import com.dantsu.escposprinter.EscPosPrinter;
1010
import com.dantsu.escposprinter.connection.DeviceConnection;
11-
import com.dantsu.escposprinter.connection.bluetooth.BluetoothPrintersConnections;
1211
import com.dantsu.escposprinter.exceptions.EscPosBarcodeException;
1312
import com.dantsu.escposprinter.exceptions.EscPosConnectionException;
1413
import com.dantsu.escposprinter.exceptions.EscPosEncodingException;
@@ -49,10 +48,6 @@ protected Integer doInBackground(AsyncEscPosPrinter... printersData) {
4948
try {
5049
DeviceConnection deviceConnection = printerData.getPrinterConnection();
5150

52-
if(deviceConnection == null) {
53-
deviceConnection = BluetoothPrintersConnections.selectFirstPaired();
54-
}
55-
5651
if(deviceConnection == null) {
5752
return AsyncEscPosPrint.FINISH_NO_PRINTER;
5853
}

app/src/main/res/layout/activity_main.xml

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,28 @@
1717
android:layout_marginBottom="20dp"
1818
android:text="Click to print !" />
1919

20-
<Button
21-
android:id="@+id/button_bluetooth"
20+
21+
<LinearLayout
2222
android:layout_width="wrap_content"
2323
android:layout_height="wrap_content"
24+
android:layout_gravity="center"
2425
android:layout_marginBottom="20dp"
25-
android:text="Print by bluetooth !" />
26+
android:textAlignment="center"
27+
android:orientation="horizontal">
28+
29+
<Button
30+
android:id="@+id/button_bluetooth_browse"
31+
android:layout_width="wrap_content"
32+
android:layout_height="wrap_content"
33+
android:layout_marginRight="5dp"
34+
android:text="Default printer"/>
35+
36+
<Button
37+
android:id="@+id/button_bluetooth"
38+
android:layout_width="wrap_content"
39+
android:layout_height="wrap_content"
40+
android:text="Print by bluetooth !" />
41+
</LinearLayout>
2642

2743
<Button
2844
android:id="@+id/button_usb"
@@ -68,22 +84,8 @@
6884
android:id="@+id/button_tcp"
6985
android:layout_width="wrap_content"
7086
android:layout_height="wrap_content"
71-
android:text="Print by TCP !"
72-
android:layout_marginBottom="20dp"/>
73-
74-
75-
<Button
76-
android:id="@+id/button_browse"
77-
android:layout_width="wrap_content"
78-
android:layout_height="wrap_content"
79-
android:text="Browse Bluetooth Device"
80-
android:layout_marginBottom="20dp"/>
81-
82-
<Button
83-
android:id="@+id/button_bluetooth2"
84-
android:layout_width="wrap_content"
85-
android:layout_height="wrap_content"
86-
android:text="Print By : "/>
87+
android:layout_marginBottom="20dp"
88+
android:text="Print by TCP !" />
8789

8890

8991
</LinearLayout>

0 commit comments

Comments
 (0)