2012-10-23 5 views
3

이 버튼이 백그라운드 서비스가 호출 될 때 준비 단추가있는 UI가 있습니다. 화면의 스크래치처럼 홈 화면에 비트 맵 이미지를 설정해야합니다. 활동에 레이아웃을 표시하지 않고이를 수행 할 수있는 방법이 있습니까? 아니면 우리가 화면에 그 이미지를 표시하는 레이아웃을 사용한다면 배경 (집, 버튼 및 현재 다른 모든 것들이 열림)이 필요합니다. 활성화. .홈 화면에서 백그라운드 서비스를 사용하여 비트 맵 이미지 그리기

위의 이미지를 참조로 첨부 했으므로 내가 할 일을 볼 수 있습니다. 도와주세요. 귀하의 관심은 높이 평가 될 것입니다.

답변

0

이 :

Permission : android.permission.SYSTEM_ALERT_WINDOW

class ScreenOverlayService extends Service { 
HUDView mView; 

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

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    Log.i("onStartCommand", "called....");  

    //  return android.app.Service.START_STICKY; // don't kill service... 
    return START_NOT_STICKY; 
} 

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

    mView = new HUDView(this); 

    WindowManager.LayoutParams params = new WindowManager.LayoutParams(
      WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, 
      WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, 
      PixelFormat.TRANSLUCENT); 

    params.gravity = Gravity.RIGHT | Gravity.TOP; 
    params.setTitle("Load Average"); 
    WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE); 
    wm.addView(mView, params); 

} 

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

    if(mView != null){ 
     ((WindowManager) getSystemService(WINDOW_SERVICE)).removeView(mView); 
     mView = null; 
    } 
} 

class HUDView extends ViewGroup { 
    private Paint mLoadPaint; 
    Context context; 

    public HUDView(Context context_) 
    { 
     super(context_); 
     context = context_; 

     mLoadPaint = new Paint(); 
     mLoadPaint.setAntiAlias(true); 
     mLoadPaint.setTextSize(10); 
     mLoadPaint.setARGB(255, 255, 0, 0); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 
     //canvas.drawText("Hello World", 5, 15, mLoadPaint); 

     // Read the image 
     Bitmap markerImage = BitmapFactory.decodeResource(getResources(), R.drawable.pic1); 

     // Draw it, centered around the given coordinates 
     canvas.drawBitmap(markerImage, 
       screenPoint.x - markerImage.getWidth()/2, 
       screenPoint.y - markerImage.getHeight()/2, null); 

    } 

    @Override 
    protected void onLayout(boolean arg0, int arg1, int arg2, int arg3, int arg4) { 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     return super.onTouchEvent(event); 
    } 
} 

}

... 당신을 위해 늦게 대답은하지만, 다른 사람 일에 저장할 수 있습니다 될 수있다