AlwaysOnTopService.java public class AlwaysOnTopService extends Service { @Override public IBinder onBind(Intent arg0) { return null; } @Override public void onCreate() { super.onCreate(); } @Override public void onDestroy() { super.onDestroy(); } }2. 뷰 생성 및 최상위 윈도우에 추가 간단하게 텍스트뷰 하나 추가하는 코드이다.
private TextView tv; //항상 보이게 할 뷰. 멤버필드로 선언 @Override public void onCreate() { super.onCreate(); tv = new TextView(this); //뷰 생성 tv.setText("이 뷰는 항상 위에 있다."); tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18); tv.setTextColor(Color.BLUE); //최상위 윈도우에 넣기 위한 설정 WindowManager.LayoutParams params = new WindowManager.LayoutParams( WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, //항상 최 상위에 있게 WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, //터치 인식 PixelFormat.TRANSLUCENT); //투명 WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE); //윈도 매니저 wm.addView(tv, params); //최상위 윈도우에 뷰 넣기. permission필요. }3. 매니페스트에 퍼미션 설정 WinodwManager에 addView 메소드를 사용하려면 android.permission.SYSTEM_ALERT_WINDOW 퍼미션이 필요하다.
4. 뷰 제거 서비스 종료시 뷰를 제거 해야 한다.................
@Override public void onDestroy() { super.onDestroy(); if(tv != null) //서비스 종료시 뷰 제거. *중요 : 뷰를 꼭 제거 해야함. { ((WindowManager) getSystemService(WINDOW_SERVICE)).removeView(tv); tv = null; } }5. 서비스 실행/중지 할 activity 만들기
AlwaysOnTopActivity.java public class AlwaysOnTopActivity extends Activity implements OnClickListener { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); findViewById(R.id.start).setOnClickListener(this); //시작버튼 findViewById(R.id.end).setOnClickListener(this); //중시버튼 } @Override public void onClick(View v) { int view = v.getId(); if(view == R.id.start) startService(new Intent(this, AlwaysOnTopService.class)); //서비스 시작 else stopService(new Intent(this, AlwaysOnTopService.class)); //서비스 종료 } }
출처 : http://blog.daum.net/mailss/18 [ like miller 님] Android와 교감 블로그
댓글 없음:
댓글 쓰기