如何通过Android中的蓝牙连接手机和打印机?

任何人都可以告诉我如何通过蓝牙连接手机打印在Android中打印文本文件?

也就是说,如果我从Android应用程序点击打印button,打印机必须打印相应的文件。根据我的知识,我已经在谷歌search它,但我找不到任何好的样品做到这一点。有人至less有一个示例Android程序来做到这一点,这将是更好的清除我的混乱。

build议请。 谢谢你宝贵的时间!

Related of "如何通过Android中的蓝牙连接手机和打印机?"

蓝牙打印机Android示例在您的编辑器中创build一个新的Android项目BlueToothPrinterApp。

步骤1:

创build下面的主要活动

com.example.BlueToothPrinterApp/BlueToothPrinterApp.java package com.example.BlueToothPrinterApp; import android.app.Activity; import android.os.Bundle; import java.io.IOException; import java.io.OutputStream; import android.bluetooth.BluetoothSocket; import android.content.ContentValues; import android.content.Intent; import android.os.Environment; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class BlueToothPrinterApp extends Activity { /** Called when the activity is first created. */ EditText message; Button printbtn; byte FONT_TYPE; private static BluetoothSocket btsocket; private static OutputStream btoutputstream; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); message = (EditText)findViewById(R.id.message); printbtn = (Button)findViewById(R.id.printButton); printbtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { connect(); } }); } protected void connect() { if(btsocket == null){ Intent BTIntent = new Intent(getApplicationContext(), BTDeviceList.class); this.startActivityForResult(BTIntent, BTDeviceList.REQUEST_CONNECT_BT); } else{ OutputStream opstream = null; try { opstream = btsocket.getOutputStream(); } catch (IOException e) { e.printStackTrace(); } btoutputstream = opstream; print_bt(); } } private void print_bt() { try { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } btoutputstream = btsocket.getOutputStream(); byte[] printformat = { 0x1B, 0×21, FONT_TYPE }; btoutputstream.write(printformat); String msg = message.getText().toString(); btoutputstream.write(msg.getBytes()); btoutputstream.write(0x0D); btoutputstream.write(0x0D); btoutputstream.write(0x0D); btoutputstream.flush(); } catch (IOException e) { e.printStackTrace(); } } @Override protected void onDestroy() { super.onDestroy(); try { if(btsocket!= null){ btoutputstream.close(); btsocket.close(); btsocket = null; } } catch (IOException e) { e.printStackTrace(); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); try { btsocket = BTDeviceList.getSocket(); if(btsocket != null){ print_bt(); } } catch (Exception e) { e.printStackTrace(); } } } 

第2步:

 com.example.BlueToothPrinterApp/BTDeviceList.java package com.example.BlueToothPrinterApp; import java.io.IOException; import java.util.Set; import java.util.UUID; import android.app.ListActivity; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothSocket; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast; public class BTDeviceList extends ListActivity { static public final int REQUEST_CONNECT_BT = 0×2300; static private final int REQUEST_ENABLE_BT = 0×1000; static private BluetoothAdapter mBluetoothAdapter = null; static private ArrayAdapter<String> mArrayAdapter = null; static private ArrayAdapter<BluetoothDevice> btDevices = null; private static final UUID SPP_UUID = UUID .fromString(“8ce255c0-200a-11e0-ac64-0800200c9a66″); // UUID.fromString(“00001101-0000-1000-8000-00805F9B34FB”); static private BluetoothSocket mbtSocket = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTitle(“Bluetooth Devices”); try { if (initDevicesList() != 0) { this.finish(); return; } } catch (Exception ex) { this.finish(); return; } IntentFilter btIntentFilter = new IntentFilter( BluetoothDevice.ACTION_FOUND); registerReceiver(mBTReceiver, btIntentFilter); } public static BluetoothSocket getSocket() { return mbtSocket; } private void flushData() { try { if (mbtSocket != null) { mbtSocket.close(); mbtSocket = null; } if (mBluetoothAdapter != null) { mBluetoothAdapter.cancelDiscovery(); } if (btDevices != null) { btDevices.clear(); btDevices = null; } if (mArrayAdapter != null) { mArrayAdapter.clear(); mArrayAdapter.notifyDataSetChanged(); mArrayAdapter.notifyDataSetInvalidated(); mArrayAdapter = null; } finalize(); } catch (Exception ex) { } catch (Throwable e) { } } private int initDevicesList() { flushData(); mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (mBluetoothAdapter == null) { Toast.makeText(getApplicationContext(), “Bluetooth not supported!!”, Toast.LENGTH_LONG).show(); return -1; } if (mBluetoothAdapter.isDiscovering()) { mBluetoothAdapter.cancelDiscovery(); } mArrayAdapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1); setListAdapter(mArrayAdapter); Intent enableBtIntent = new Intent( BluetoothAdapter.ACTION_REQUEST_ENABLE); try { startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT); } catch (Exception ex) { return -2; } Toast.makeText(getApplicationContext(), “Getting all available Bluetooth Devices”, Toast.LENGTH_SHORT) .show(); return 0; } @Override protected void onActivityResult(int reqCode, int resultCode, Intent intent) { super.onActivityResult(reqCode, resultCode, intent); switch (reqCode) { case REQUEST_ENABLE_BT: if (resultCode == RESULT_OK) { Set<BluetoothDevice> btDeviceList = mBluetoothAdapter .getBondedDevices(); try { if (btDeviceList.size() > 0) { for (BluetoothDevice device : btDeviceList) { if (btDeviceList.contains(device) == false) { btDevices.add(device); mArrayAdapter.add(device.getName() + “\n” + device.getAddress()); mArrayAdapter.notifyDataSetInvalidated(); } } } } catch (Exception ex) { } } break; } mBluetoothAdapter.startDiscovery(); } private final BroadcastReceiver mBTReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (BluetoothDevice.ACTION_FOUND.equals(action)) { BluetoothDevice device = intent .getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); try { if (btDevices == null) { btDevices = new ArrayAdapter<BluetoothDevice>( getApplicationContext(), android.R.id.text1); } if (btDevices.getPosition(device) < 0) { btDevices.add(device); mArrayAdapter.add(device.getName() + “\n” + device.getAddress() + “\n” ); mArrayAdapter.notifyDataSetInvalidated(); } } catch (Exception ex) { // ex.fillInStackTrace(); } } } }; @Override protected void onListItemClick(ListView l, View v, final int position, long id) { super.onListItemClick(l, v, position, id); if (mBluetoothAdapter == null) { return; } if (mBluetoothAdapter.isDiscovering()) { mBluetoothAdapter.cancelDiscovery(); } Toast.makeText( getApplicationContext(), “Connecting to ” + btDevices.getItem(position).getName() + “,” + btDevices.getItem(position).getAddress(), Toast.LENGTH_SHORT).show(); Thread connectThread = new Thread(new Runnable() { @Override public void run() { try { boolean gotuuid = btDevices.getItem(position) .fetchUuidsWithSdp(); UUID uuid = btDevices.getItem(position).getUuids()[0] .getUuid(); mbtSocket = btDevices.getItem(position) .createRfcommSocketToServiceRecord(uuid); mbtSocket.connect(); } catch (IOException ex) { runOnUiThread(socketErrorRunnable); try { mbtSocket.close(); } catch (IOException e) { // e.printStackTrace(); } mbtSocket = null; return; } finally { runOnUiThread(new Runnable() { @Override public void run() { finish(); } }); } } }); connectThread.start(); } private Runnable socketErrorRunnable = new Runnable() { @Override public void run() { Toast.makeText(getApplicationContext(), “Cannot establish connection”, Toast.LENGTH_SHORT).show(); mBluetoothAdapter.startDiscovery(); } }; @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); menu.add(0, Menu.FIRST, Menu.NONE, “Refresh Scanning”); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { super.onOptionsItemSelected(item); switch (item.getItemId()) { case Menu.FIRST: initDevicesList(); break; } return true; } } 

第3步:

编辑你的main.xml文件并粘贴下面的代码。

RES /布局/ main.xml中

 <?xml version=”1.0″ encoding=”utf-8″?> <RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android&#8221; android:layout_width=”fill_parent” android:layout_height=”fill_parent” android:paddingLeft=”16dp” android:paddingRight=”16dp” > <TextView android:id=”@+id/msgtextlbl” android:layout_width=”match_parent” android:layout_height=”wrap_content” android:text=”Enter Your Message : ” > </TextView> <EditText android:id=”@+id/message” android:layout_width=”fill_parent” android:layout_height=”100dp” android:layout_below=”@+id/msgtextlbl” android:text=”” > </EditText> <Button android:id=”@+id/printButton” android:layout_width=”fill_parent” android:layout_height=”wrap_content” android:layout_below=”@+id/message” android:layout_marginTop=”5dip” android:layout_centerHorizontal=”true” android:text=”Print” > </Button> </RelativeLayout> 

步骤4:

现在编辑你的AndroidManifest.xml

添加蓝牙许可和pipe理权限。

AndroidManifest.xml中

 <?xml version=”1.0″ encoding=”utf-8″?> <manifest xmlns:android=”http://schemas.android.com/apk/res/android&#8221; package=”com.example.BlueToothPrinterApp” android:versionCode=”1″ android:versionName=”1.0″> <application android:label=”@string/app_name” android:icon=”@drawable/ic_launcher”> <activity android:name=”BlueToothPrinterApp” android:label=”@string/app_name”> <intent-filter> <action android:name=”android.intent.action.MAIN” /> <category android:name=”android.intent.category.LAUNCHER” /> </intent-filter> </activity> <activity android:name=”BTDeviceList”></activity> </application> <uses-sdk android:minSdkVersion=”14″ /> <uses-permission android:name=”android.permission.BLUETOOTH”></uses-permission> <uses-permission android:name=”android.permission.BLUETOOTH_ADMIN”></uses-permission> </manifest> 

编译并运行这个应用程序。 input消息并按打印button。

你会看到蓝牙设备的列表。 selectbluettoth打印机。

检查您的蓝牙打印机上的打印。

这里是代码参考…