package cn.yo2.aquarium.test.testandroidserver;
import android.app.Service;
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 java.io.File;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 设置:android手机
*
*
* */
public class AndroidService extends Service {
public static final String TAG = "AndroidService";
public static Boolean mainThreadFlag = true;
public static Boolean ioThreadFlag = true;
ServerSocket serverSocket = null;
final int SERVER_PORT = 10086;
File testFile;
private sysBroadcastReceiver sysBR;
@Override
public void onCreate() {
super.onCreate();
Log.v(TAG, Thread.currentThread().getName() + "---->" + " onCreate");
/* 创建内部类sysBroadcastReceiver 并注册registerReceiver */
sysRegisterReceiver();
new Thread() {
public void run() {
doListen();
};
}.start();
}
private void doListen() {
Log.d(TAG, Thread.currentThread().getName() + "---->"
+ " doListen() START");
serverSocket = null;
try {
Log.d(TAG, Thread.currentThread().getName() + "---->"
+ " doListen() new serverSocket");
serverSocket = new ServerSocket(SERVER_PORT);
boolean mainThreadFlag = true;
while (mainThreadFlag) {
Log.d(TAG, Thread.currentThread().getName() + "---->"
+ " doListen() listen");
Socket client = serverSocket.accept();
new Thread(new ThreadReadWriterIOSocket(this, client)).start();
}
} catch (IOException e1) {
Log.v(AndroidService.TAG, Thread.currentThread().getName()
+ "---->" + "new serverSocket error");
e1.printStackTrace();
}
}
/* 创建内部类sysBroadcastReceiver 并注册registerReceiver */
private void sysRegisterReceiver() {
Log.v(TAG, Thread.currentThread().getName() + "---->"
+ "sysRegisterReceiver");
sysBR = new sysBroadcastReceiver();
/* 注册BroadcastReceiver */
IntentFilter filter1 = new IntentFilter();
/* 新的应用程序被安装到了设备上的广播 */
filter1.addAction("android.intent.action.PACKAGE_ADDED");
filter1.addDataScheme("package");
filter1.addAction("android.intent.action.PACKAGE_REMOVED");
filter1.addDataScheme("package");
registerReceiver(sysBR, filter1);
}
/* 内部类:BroadcastReceiver 用于接收系统事件 */
private class sysBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equalsIgnoreCase("android.intent.action.PACKAGE_ADDED")) {
// ReadInstalledAPP();
} else if (action
.equalsIgnoreCase("android.intent.action.PACKAGE_REMOVED")) {
// ReadInstalledAPP();
}
Log.v(TAG, Thread.currentThread().getName() + "---->"
+ "sysBroadcastReceiver onReceive");
}
}
@Override
public void onDestroy() {
super.onDestroy();
// 关闭线程
mainThreadFlag = false;
ioThreadFlag = false;
// 关闭服务器
try {
Log.v(TAG, Thread.currentThread().getName() + "---->"
+ "serverSocket.close()");
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
Log.v(TAG, Thread.currentThread().getName() + "---->"
+ "**************** onDestroy****************");
unregisterReceiver(sysBR);
}
@Override
public void onStart(Intent intent, int startId) {
Log.d(TAG, Thread.currentThread().getName() + "---->" + " onStart()");
super.onStart(intent, startId);
}
@Override
public IBinder onBind(Intent arg0) {
Log.d(TAG, " onBind");
return null;
}
}