package com.dahanis.utils.bluetoothprinter;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.bluetooth.BluetoothDevice;
import android.content.Context;
import android.content.DialogInterface;
import android.widget.Toast;
import java.util.List;
public class DefaultOnPrintListener implements com.dahanis.utils.bluetoothprinter.OnPrintListener {
private Context context;
private ProgressDialog progressDialog;
private com.dahanis.utils.bluetoothprinter.IBluetoothPrintUtil iBluetoothPrintUtil;
public DefaultOnPrintListener(Context context, com.dahanis.utils.bluetoothprinter.IBluetoothPrintUtil iBluetoothPrintUtil) {
this.context = context;
this.iBluetoothPrintUtil = iBluetoothPrintUtil;
}
@Override
public void onReceiveDevices(boolean isOnlyBoundedDevices, final List<BluetoothDevice> allAvailableDevices) {
if (progressDialog != null && progressDialog.isShowing()) {
progressDialog.dismiss();
}
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("请选择蓝牙连接设备进行打印");
String[] names = new String[allAvailableDevices.size()];
for (int i = 0; i < allAvailableDevices.size(); i++) {
names[i] = allAvailableDevices.get(i).getName() + "\n" + allAvailableDevices.get(i).getAddress();
}
builder.setItems(names, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
final int position = which;
if (!iBluetoothPrintUtil.isConnected()) {
iBluetoothPrintUtil.connectDevice(allAvailableDevices.get(position));
} else {
iBluetoothPrintUtil.printData();
}
}
});
builder.setPositiveButton("找寻新设备", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
progressDialog = ProgressDialog.show(context, null, "搜寻中,请稍候...");
iBluetoothPrintUtil.refreshDevice();
}
});
builder.setNegativeButton("取消打印", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
AlertDialog dialog = builder.create();
dialog.setCancelable(true);
dialog.setCanceledOnTouchOutside(false);
dialog.show();
}
@Override
public void onInitBluetoothFunction() {
progressDialog = ProgressDialog.show(context, null, "正在初始化中,请稍候...");
}
@Override
public void onInitBluetoothFunctionError() {
Toast.makeText(context,"蓝牙初始化失败",Toast.LENGTH_SHORT).show();
}
@Override
public void onStartConnectDevice() {
progressDialog = ProgressDialog.show(context, null, "正在连接中,请稍候...");
}
@Override
public void onConnectedDevice() {
progressDialog.dismiss();
Toast.makeText(context, "蓝牙连接成功",Toast.LENGTH_SHORT).show();
iBluetoothPrintUtil.printData();
}
@Override
public void onConnectedError(Throwable throwable) {
progressDialog.dismiss();
Toast.makeText(context, "蓝牙连接失败",Toast.LENGTH_SHORT).show();
}
@Override
public void onStartPrint() {
progressDialog = ProgressDialog.show(context, null, "正在打印中,请稍候...");
}
@Override
public void onSuccessPrint() {
progressDialog.dismiss();
Toast.makeText(context, "蓝牙打印成功",Toast.LENGTH_SHORT).show();
}
@Override
public void onPrintError(Throwable throwable) {
progressDialog.dismiss();
Toast.makeText(context, "蓝牙打印失败",Toast.LENGTH_SHORT).show();
/**
* 打印失败就断开连接,恢复成未初始化状态,但不清空数据
* ,这样当下次调用IBluetoothPrintUtil.print(Context context)方法时框架会自动进行重新初始化蓝牙,并可以选择新设备进行连接
*/
iBluetoothPrintUtil.finishBluetoothConnection();
}
}