BluetoothActivity
package zrsf.mis.client.activity;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class BluetoothActivity extends Activity {
public static String TAG = "";
public void discoveryBluetooth(){
BluetoothAdapter mAdapter= BluetoothAdapter.getDefaultAdapter();
if(!mAdapter.isEnabled()){
Intent enabler = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
this.startActivityForResult(enabler, Activity.RESULT_FIRST_USER);
// mAdapter.enable();
}
mAdapter.startDiscovery();
BroadcastReceiver mReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
if (device.getBondState() != BluetoothDevice.BOND_BONDED) {
Log.v(TAG, "find device:" + device.getName() + device.getAddress());
}
}
else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
setTitle("");
// if (mNewDevicesAdapter.getCount() == 0) {
//
// Log.v(TAG,"find over");
//
// }
}
}
};
}
}
MISMain
package zrsf.mis.client;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
public class MISMain extends Activity {
public static final int FIND_BLUETOOTH = 1;
public static final int BACK = 2;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView tvbtAddr = (TextView)findViewById(R.id.bluetoothAddress);
tvbtAddr.setText("000000000");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, FIND_BLUETOOTH, 1, R.string.find_bluetooth);
menu.add(0, BACK, 2, R.string.back);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
if(FIND_BLUETOOTH == item.getItemId()){
System.out.println("--------------->BluetoothAddress");
}else if(BACK == item.getItemId()){
System.out.println("-------------->Back");
}
return super.onMenuItemSelected(featureId, item);
}
}
InvoicePrint
package zrsf.mis.util;
import java.io.OutputStream;
import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Calendar;
import java.util.Date;
public class InvoicePrint {
private static InvoicePrint instance;
public static InvoicePrint getInstance(){
if(instance == null){
instance = new InvoicePrint();
}
return instance;
}
public URLConnection conn = null;
public OutputStream dos = null;
public URL url = new URL("btspp://"+ "" +":1");
public InvoicePrint() {
super();
try {
conn = url.openConnection();
dos = conn.getOutputStream();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 鎵撳嵃鍙戠エ
*/
public boolean printInvoice(){
int j = 13;
int i = 0;
byte[] headbtye = null;
byte[] infobtye = null;
String[] headInfo = new String[j];
String[] printInfo = new String[j];
headInfo[i] = "鍙戠エ鍙风爜锛?;
printInfo[i++] = LocaleContent.INVOICE_NO; //0
headInfo[i] = "椤惧鍚嶇О锛?;
printInfo[i++] = LocaleContent.PAYER; //1
headInfo[i] = "鐢佃瘽锛?;
printInfo[i++] = LocaleContent.PAYER_MOBILE; //2
headInfo[i] = "鏌ヨ鐮侊細";
printInfo[i++] = LocaleContent.INVOICE_QUERY_CODE; //3
headInfo[i] = "闃蹭吉鐮侊細";
printInfo[i++] = LocaleContent.TAX_NO; //4
// headInfo[i] = "鏈哄櫒鍙风爜锛?;
// printInfo[i++] = LocaleContent.MACHINE_NO; //4
headInfo[i] = "绋庡姟璇佸彿锛?;
printInfo[i++] = LocaleContent.TAXREGISTERNO; //5
headInfo[i] = "寮€绁ㄥ崟浣嶏細";
printInfo[i++] = LocaleContent.PAYEE; //6
headInfo[i] = "椤圭洰";
printInfo[i++] = LocaleContent.XM; //7
headInfo[i] = "閲戦";
printInfo[i++] = LocaleContent.SMALL_SUM; //8
headInfo[i] = "灏忓啓鍚堣锛氾骏";
printInfo[i++] = LocaleContent.SMALL_SUM; //9
headInfo[i] = "澶у啓鍚堣锛?;
printInfo[i++] = LocaleContent.DX; //10
headInfo[i] = "寮€绁ㄤ汉锛?;
printInfo[i++] = LocaleContent.NAME; //11
headInfo[i] = "寮€绁ㄦ椂闂达細";
printInfo[i++] = this.getDateStr(LocaleContent.INVOICE_START_DATE)+" "; //12
try {
if(conn == null){
url = "btspp://"+ LocaleContent.PRINT_ADD +":1";
conn = (StreamConnection)Connector.open(url);
dos = conn.openDataOutputStream();
}
dos.write(0x1D);
dos.write(0x0C); //閫侀粦鏍囩焊鑷虫墦鍗拌捣濮嬩綅缃?
dos.flush();
for(int x = 0; x < j; x++){
if(x == 6 || x == 7 || x == 8 || x == 10){
if(x == 6){
headbtye = headInfo[x].getBytes("gb2312");
dos.writeInt(headbtye.length);
dos.write(headbtye);
int length = printInfo[x].length();
if(length <= 12){
infobtye = printInfo[x].getBytes("gb2312");
dos.writeInt(infobtye.length);
dos.write(infobtye);
dos.write(0x0A);
}else if(12 < length && length <= 24){
infobtye = printInfo[x].substring(0, 12).getBytes("gb2312");
dos.writeInt(infobtye.length);
dos.write(infobtye);
infobtye = printInfo[x].substring(12, length).getBytes("gb2312");
dos.writeInt(infobtye.length);
dos.write(infobtye);
dos.write(0x0A);
}
dos.write(0x0A);
}
if(x == 7){
//璁剧疆姹夊瓧鍥涘€嶆墦鍗版ā寮? 寮€濮?
// dos.write(0x1C);
// dos.write(0x57);
// dos.write(1); // 0 鍙栨秷 1 璁剧疆
//缁撴潫
String str6 = headInfo[x] + "\t\t\t" + headInfo[x + 1];
infobtye = str6.getBytes("gb2312");
dos.writeInt(infobtye.length);
dos.write(infobtye);
dos.write(0x0A);
infobtye = printInfo[x].getBytes("gb2312");
dos.writeInt(infobtye.length);
dos.write(infobtye);
for(int m=0;m<3;m++){
dos.write(0x09);
}
infobtye = printInfo[x + 1].getBytes("gb2312");
dos.writeInt(infobtye.length);
dos.write(infobtye);
//璁剧疆姹夊瓧鍥涘€嶆墦鍗版ā寮? 寮€濮?
// dos.write(0x1C);
// dos.write(0x57);
// dos.write(0); // 0 鍙栨秷 1 璁剧疆
//缁撴潫
}
if(x == 8){
dos.write(0x0A);
dos.write(0x0A);
}
if(x == 10){
String str = headInfo[x] + printInfo[x];
int length = str.length();
if(length <= 12){
infobtye = str.getBytes("gb2312");
dos.writeInt(infobtye.length);
dos.write(infobtye);
dos.write(0x0A);
}else if(12 < length && length <= 24){
infobtye = str.substring(0, 12).getBytes("gb2312");
dos.writeInt(infobtye.length);
dos.write(infobtye);
infobtye = str.substring(12, length).getBytes("gb2312");
dos.writeInt(infobtye.length);
dos.write(infobtye);
dos.write(0x0A);
}
}
}else{
headbtye = headInfo[x].getBytes("gb2312");
infobtye = printInfo[x].getBytes("gb2312");
dos.writeInt(headbtye.length);
dos.write(headbtye);
dos.writeInt(infobtye.length);
dos.write(infobtye);
if(x == 1 || x == 2 || x == 3 || x == 9 || x == 10){
dos.write(0x0A);
}
}
}
dos.write(0x0A);
dos.flush();
dos.write(0x1D); //璧扮焊鍒板垏绾镐綅缃?
dos.write(0x56);
dos.write(66);
dos.write(0x0);
dos.flush();
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
// finally{
// this.closeConn();
// }
}
/**
* 鍏抽棴杩炴帴
*/
public void closeConn(){
if(dos != null){
try {
dos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(conn != null){
try {
conn.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* Loog鍨嬭浆鏃ユ湡鏍煎紡
* @return
*/
public String getDateStr(String log){
Date date = new Date(Long.parseLong(log));
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
String YEAR = String.valueOf(calendar.get(Calendar.YEAR)).length()==1?"0"+String.valueOf(calendar.get(Calendar.YEAR)):String.valueOf(calendar.get(Calendar.YEAR));
String MONTH = String.valueOf((calendar.get(Calendar.MONTH)) + 1).length()==1?"0"+String.valueOf((calendar.get(Calendar.MONTH)) + 1):String.valueOf((calendar.get(Calendar.MONTH)) + 1);
String DATE = String.valueOf(calendar.get(Calendar.DATE)).length()==1?"0"+String.valueOf(calendar.get(Calendar.DATE)):String.valueOf(calendar.get(Calendar.DATE));
// String HOUR_OF_DAY = String.valueOf(calendar.get(Calendar.HOUR_OF_DAY)).length()==1?"0"+String.valueOf(calendar.get(Calendar.HOUR_OF_DAY)):String.valueOf(calendar.get(Calendar.HOUR_OF_DAY));
// String MINUTE = String.valueOf(calendar.get(Calendar.MINUTE)).length()==1?"0"+String.valueOf(calendar.get(Calendar.MINUTE)):String.valueOf(calendar.get(Calendar.MINUTE));
// String SECOND = String.valueOf(calendar.get(Calendar.SECOND)).length()==1?"0"+String.valueOf(calendar.get(Calendar.SECOND)):String.valueOf(calendar.get(Calendar.SECOND));
String str = YEAR + "-" +
MONTH + "-" +
DATE;
// + " " +
// HOUR_OF_DAY + ":" +
// MINUTE + ":" +
// SECOND;
return str;
}
}
转载:http://www.adobex.com/android/source/details/00000412.htm