系统服务
AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
WindowManager windowManager = (WindowManager) getApplicationContext().getSystemService(WINDOW_SERVICE);
ConnectivityManager manager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
悬浮窗口
mImageView = new ImageView(this)
mImageView.setBackgroundResource(R.drawable.ic_launcher)
mLayoutParams = new WindowManager.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 0, 0,
PixelFormat.TRANSPARENT)
mLayoutParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL
| LayoutParams.FLAG_NOT_FOCUSABLE
| LayoutParams.FLAG_SHOW_WHEN_LOCKED
mLayoutParams.type = LayoutParams.TYPE_SYSTEM_ERROR
mLayoutParams.gravity = Gravity.TOP | Gravity.LEFT
mLayoutParams.x = 100
mLayoutParams.y = 300
mImageView.setOnTouchListener(this)
mWindowManager.addView(mImageView, mLayoutParams)
拖动悬浮窗口
@Override
public boolean onTouch(View v, MotionEvent event) {
int rawX = (int) event.getRawX();
int rawY = (int) event.getRawY();
int x = (int) event.getX();
int y = (int) event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
break;
}
case MotionEvent.ACTION_MOVE: {
Log.d(TAG, "onTouch: rawX " + rawX);
Log.d(TAG, "onTouch: rawY " + rawY);
mLayoutParams.x = rawX;
mLayoutParams.y = rawY;
mWindowManager.updateViewLayout(mImageView, mLayoutParams);
break;
}
case MotionEvent.ACTION_UP: {
break;
}
default:
break;
}
return false;
}
@Override
protected void onDestroy() {
try {
mWindowManager.removeView(mImageView);
} catch (IllegalArgumentException e) {
e.printStackTrace();
}
super.onDestroy();
}