1. 程式人生 > >Android----獲得當前應用包名、當前activity的名字、判斷是否是系統桌面、service類

Android----獲得當前應用包名、當前activity的名字、判斷是否是系統桌面、service類

public class FloatWindowService extends Service {


/**
* 用於線上程中建立或移除懸浮窗。
*/
private Handler handler = new Handler();


/**
* 定時器,定時進行檢測當前應該建立還是移除懸浮窗。
*/
private Timer timer;


@Override
public IBinder onBind(Intent intent) {
return null;
}


@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// 開啟定時器,每隔0.5秒重新整理一次
if (timer == null) {
timer = new Timer();
timer.scheduleAtFixedRate(new RefreshTask(), 0, 500);
Log.d("lixx", "=====定時重新整理,監聽懸浮窗的狀態=====");
}
return super.onStartCommand(intent, flags, startId);
}


@Override
public void onDestroy() {
super.onDestroy();
// Service被終止的同時也停止定時器繼續執行
timer.cancel();
timer = null;
}


class RefreshTask extends TimerTask {


@Override
public void run() {
//獲得當前activity的名字
String activity_name = MyWindowManager.getRunningActivityName(getApplicationContext());
Log.d("lixx", "activity_name---->" + activity_name);
//獲得應用程式包名
String pck_name = MyWindowManager.getAppPackageName(getApplicationContext());
Log.d("lixx", "pck_name---->" + pck_name);

// 當前介面是桌面,且沒有懸浮窗顯示,則建立懸浮窗。
if (isHome()) {
handler.post(new Runnable() {
@Override
public void run() {
Log.d("lixx", "桌面,移除懸浮窗!");
MyWindowManager.removeSmallWindow(getApplicationContext());
}
});
}else if(!TextUtils.isEmpty(activity_name)){
Log.d("lixx","activity_name is not null");
if(MyWindowManager.isShowingYKQ(activity_name) && pck_name.equals("com.ysten.istouch.client.screenmoving")){
handler.post(new Runnable(){
@Override
public void run(){
MyWindowManager.createSmallWindow(getApplicationContext());
}
});
}else{
handler.post(new Runnable() {
@Override
public void run() {
Log.d("lixx", "遙控器介面,移除懸浮窗!");
MyWindowManager.removeSmallWindow(getApplicationContext());
}
});
}
}else{
handler.post(new Runnable(){
@Override
public void run(){
MyWindowManager.removeSmallWindow(getApplicationContext());
}
});
}
}


}