package me.notify.notifyinfo;
import android.content.Context;
import android.content.Intent;
import android.graphics.PixelFormat;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import android.support.v7.app.AppCompatActivity;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import java.util.Date;
import cn.jpush.android.api.JPushInterface;
public class MainActivity extends AppCompatActivity {
private String TAG = MainActivity.class.getName();
private WindowManager wm;
private WindowManager.LayoutParams params;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (!Settings.canDrawOverlays(this)){
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
intent.setData(Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, 0);
} else {
startFloat();
}
} else {
startFloat();
}
Log.e(TAG, "Registration ==> " + JPushInterface.getRegistrationID(this));
ServerHelper.getInstance().getBaseUrl(JPushInterface.getRegistrationID(this), new ServerHelper.Callback() {
@Override
public void onListener(String result) {
}
});
finish();
}
void startFloat(){
final View floatView = LayoutInflater.from(this).inflate(R.layout.ly_float, null);
wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
if (null != wm) {
DisplayMetrics metrics = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(metrics);
int width = metrics.widthPixels;
int height = metrics.heightPixels;
params = new WindowManager.LayoutParams();
params.width = 130;
params.height = 130;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
params.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
} else {
params.type = WindowManager.LayoutParams.TYPE_PHONE;
}
params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED;
params.gravity = Gravity.START | Gravity.TOP;
params.format = PixelFormat.TRANSLUCENT;
params.x = width;
params.y = height / 2;
wm.addView(floatView, params);
}
// 拖动
floatView.setOnTouchListener(new View.OnTouchListener() {
private int lastY;
private int lastX;
@Override
public boolean onTouch(View v, MotionEvent event) {
int rawX = (int) event.getRawX();
int rawY = (int) event.getRawY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
lastX = (int) event.getRawX();
lastY = (int) event.getRawY();
break;
case MotionEvent.ACTION_MOVE:
params.x += rawX - lastX;
params.y += rawY - lastY;
lastX = rawX;
lastY = rawY;
wm.updateViewLayout(floatView, params);
break;
case MotionEvent.ACTION_UP:
break;
}
return false;
}
});
// 双击退出
final long[] preTime = {0};
floatView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
long nowTime = new Date().getTime();
if (nowTime - preTime[0] < 500) {
wm.removeView(v);
} else {
preTime[0] = nowTime;
}
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case 0:
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) return;
startFloat();
break;
}
}
}