2012-12-20 76 views
0

我正在开发一个永久性主屏幕覆盖对话框,因为按下home按钮后服务启动活动时出现5秒的延迟我被迫将我的活动代码放入服务也。我的应用程序工作正常,但当用户按下home或back按钮时,叠加层仍保留在屏幕上。是否有任何方法来检测用户是否按下回家的服务.class,我可以拨打selfStop()并从屏幕中删除视图?在一个活动中,我可以使用onStop检查主页按钮是否被按下,但由于在我被卡住的服务中没有onStop()Android - 识别HOME按钮按下service.class

任何方式让主页按钮像预期的那样反应?

+0

我们的代码在活动中发现的...但它不会得到在服务类的支持.. – itsrajesh4uguys

+0

所以...有没有办法让在服务分类这个问题? – user1915113

+0

是的..当然..因为服务是用于在应用程序的后台工作.. – itsrajesh4uguys

回答

0

手机后台和主页按钮在服务级别上运行良好。

public class MyFooterService extends Service{ 
View myview; 
WindowManager wm; 
FrameLayout wrapper; 
public MyFooterService() { 

} 
@Override 
public void onCreate() { 
Log.d(TAG, "onCreate called"); 
LayoutInflater li = (LayoutInflater) 
getSystemService(LAYOUT_INFLATER_SERVICE); 
wm = (WindowManager) getSystemService(WINDOW_SERVICE); 
final WindowManager.LayoutParams params = new 
WindowManager.LayoutParams(
     WindowManager.LayoutParams.MATCH_PARENT, 
     90, //height of ur layout 
     WindowManager.LayoutParams.TYPE_PHONE, 
     0, 
     PixelFormat.TRANSLUCENT); 

params.gravity = Gravity.BOTTOM ; 
params.x = 0; 
params.y = 0; 
wrapper = new FrameLayout(this) { 
    @Override 
    public boolean dispatchKeyEvent(KeyEvent event) { 
     if (event.getKeyCode()==KeyEvent.KEYCODE_BACK) { 
      // handle the back button code; 
     return true; 
     } 
     return super.dispatchKeyEvent(event); 
    } 
    //if pressed home key, 
    public void onCloseSystemDialogs(String reason) { 
     //The Code Want to Perform. 
     System.out.println("System dialog " + reason); 
     if (reason.equals("homekey")) { 
      // handle home button 
     } 
    } 

}; 
myview = li.inflate(R.layout.my_footer, wrapper); // here set into your own layout 

wm.addView(myview, params); 

    } 
}