2014-10-09 4 views
0

페이스 북의 메신저처럼 모든 앱과 데스크톱의 맨 위에있는 클릭 가능한 이미지를 만들려고합니다.모든 앱에 플로팅 터치하는 방법

하고 거기 내 활동에 두 개의 버튼, "서비스를 시작합니다"중 하나이며, 다른 하나는 내가 "를 클릭 를"서비스를 중지 "입니다

public class FloatService extends Service 
{ 
    private WindowManager windowManager; 
    private ImageView imageBtn; 

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

    @Override 
    public void onCreate() 
    { 
     super.onCreate(); 

     windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); 

     imageBtn = new ImageView(this); 
     imageBtn.setImageResource(R.drawable.ic_launcher); 

     WindowManager.LayoutParams params = new WindowManager.LayoutParams(
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.TYPE_PHONE, 
       WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, 
       PixelFormat.TRANSLUCENT); 

     params.gravity = Gravity.TOP | Gravity.LEFT; 
     params.x = 0; 
     params.y = 100; 

     windowManager.addView(imageBtn, params); 
    } 

    @Override 
    public void onDestroy() 
    { 
     super.onDestroy(); 
     if (imageBtn != null) 
      windowManager.removeView(imageBtn); 
    } 
} 

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> 

내 코드입니다 서비스 시작 "을 클릭하면 클릭 할 수있는 이미지가 만들어 지므로 좋습니다. 하지만 다른 앱으로 변경하거나이 앱을 종료하면 앱을 열 때까지 클릭 가능한 이미지가 사라집니다. 도움을

감사

서비스가 당신의 응용 프로그램에서 종료 할 때 파괴되어 있기 때문에 메모리 부족으로 인해 문제로 일어날

답변

0

그래서 1. 당신은 Service.onStartCommand() Service.START_STICKY

에서 START_STICKY를 전달할 수 있습니다 2.You는 Service.startForeground (int id, Notification notification)

안드로이드 OS가 전경 SERV를 죽일 해달라고 전경 서비스로 서비스를 시작할 수 있습니다

얼음.

WindowManager.LayoutParams.TYPE_PHONE에서 WindowManager.LayoutParams.TYPE_SYSTEM_ALERT 당신에게

1

변경 창 유형을 도움이 될 수

WindowManager.LayoutParams params = new WindowManager.LayoutParams(
    WindowManager.LayoutParams. 
    WindowManager.LayoutParams.WRAP_CONTENT, 
    WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, // modified 
    WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, 
    PixelFormat.TRANSLUCENT); 
0

을 내가 솔루션

내 전화가 MIUI 때문에,이 부동 창을 숨기 기본을 찾을

그래서 직접 켜야합니다.

및 모든 답변 주셔서 감사합니다

관련 문제