package com.dashan.bluth.service;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.UUID;
import android.app.Service;
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.IBinder;
import android.util.Log;
import com.dashan.bluth.base.BaseApplication;
import com.dashan.bluth.bean.MessageInfo;
import com.google.gson.Gson;
public class BluthSocketService extends Service {
public BluetoothSocket socket = null; // 蓝牙通讯socket
public final static String uuid = "00001101-0000-1000-8000-00805F9B34FB";
public final static String serviceName = "teacher";
public BluetoothDevice teacherBlueth;// 教师端蓝牙
public MessageInfo minfo = null;// 通信消息
public Gson g = new Gson();
public boolean isrun = true;
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
ScreenBroadcastReceiver mScreenReceiver = new ScreenBroadcastReceiver();// 注册屏幕广播监听
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_USER_PRESENT);
this.registerReceiver(mScreenReceiver, filter);
BaseApplication ba = (BaseApplication) this.getApplication();
minfo = ba.getCurrentMinfo();
Log.d("msg", "service已经启动了");
}
public void connectToTeacher(final String msg) {// 建立通信连接
BaseApplication ba = (BaseApplication) this.getApplication();
teacherBlueth = ba.getCurrentService();
new Thread() {
public void run() {
boolean connected = true;
try {
socket = teacherBlueth
.createRfcommSocketToServiceRecord(UUID
.fromString(uuid));
socket.connect();
} catch (IOException e) {
// TODO Auto-generated catch block、
connected = false;
Log.d("msg", "老师端关闭了签到服务");
stopSelf();// 关闭后台监听服务
}
if (connected) {
sendMsgToTeacher(msg);
}
};
}.start();
}
@Override
@Deprecated
public void onStart(Intent intent, int startId) {
// TODO Auto-generated method stub
super.onStart(intent, startId);
}
public void sendMsgToTeacher(final String msg) {// 发送消息给服务器
new Thread() {
public void run() {
try {
Log.d("msg", msg);
OutputStream outStream = socket.getOutputStream();
outStream.write(msg.getBytes());
} catch (IOException e) {
Log.e("msg", "连接教师端通信失败" + e.toString());
}
};
}.start();
}
private class ScreenBroadcastReceiver extends BroadcastReceiver {
private String action = null;
@Override
public void onReceive(Context context, Intent intent) {
action = intent.getAction();
if (Intent.ACTION_SCREEN_ON.equals(action)) { // 开屏,学生开屏后发给老师
} else if (Intent.ACTION_SCREEN_OFF.equals(action)) { // 锁屏
} else if (Intent.ACTION_USER_PRESENT.equals(action)) { // 解锁
minfo.msgType = "2";
minfo.qr.setPhoneactive(Integer.parseInt(minfo.qr.phoneactive)
+ 1 + "");
Log.d("msg", "用户解开屏幕了");
connectToTeacher(g.toJson(minfo));
}
}
}
}