Olá a todos…
Estou tentando criar um aplicativo que ao clicar em START cria um serviço de sobreposição e faz alguns desenhos na tela…
até a versão 4.4 está funcionando corretamente, a partir da versão 5 e 6 do android é iniciado o serviço porem não
desenha nada na tela, meio que fica transparente…
Código:
public class ChatHead extends Service
[java]
@Override
public IBinder onBind(Intent arg2) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
Bitmap kangoo = BitmapFactory.decodeResource(getResources(), R.drawable.ic_action_ball);
//INITIALIZE FROM SCREEN DIMENSIONS
wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
//PARAMETERS
params = new LayoutParams((int) this.width, (int) this.height, LayoutParams.TYPE_SYSTEM_OVERLAY, 262184 , PixelFormat.TRANSLUCENT);
// params = new LayoutParams(kangoo.getWidth(), kangoo.getHeight(), LayoutParams.TYPE_SYSTEM_ALERT, LayoutParams.FLAG_NOT_FOCUSABLE | LayoutParams.FLAG_NOT_TOUCH_MODAL | LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,PixelFormat.TRANSLUCENT);
params2 = new LayoutParams((int) (this.ratio2 * 162.0f), (int) (this.ratio * 100.0f), LayoutParams.TYPE_PHONE, 262184, PixelFormat.TRANSLUCENT);
params.gravity = 51;
params2.gravity = 49;
params.setTitle("Load Average");
mView = new HUDView(this, kangoo);
kView = new HUDView(this, kangoo);
mView.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View arg0, MotionEvent arg1) {
switch (arg1.getAction()) {
case 0:
Touch.setFloat(arg1.getX(), arg1.getY());
return true;
case 1:
Touch.PASKAA();
return true;
case 2:
Touch.setFloat(arg1.getX(), arg1.getY());
return true;
default:
return false;
}
}
});
kView.setOnTouchListener(new OnTouchListener() {
private boolean a = true;
public boolean onTouch(View arg0, MotionEvent arg1) {
boolean z = false;
switch (arg1.getAction()) {
case 0:
case 2:
return true;
case 1:
if (!this.a) {
z = true;
}
this.a = z;
if (this.a) {
ChatHead.params.type = LayoutParams.TYPE_SYSTEM_OVERLAY;
} else {
ChatHead.params.type = LayoutParams.TYPE_PHONE;
}
ChatHead.wm.updateViewLayout(ChatHead.mView, ChatHead.params);
ChatHead.wm.removeView(ChatHead.mView);
ChatHead.wm.addView(ChatHead.mView, ChatHead.params);
ChatHead.wm.removeView(ChatHead.kView);
ChatHead.wm.addView(ChatHead.kView, ChatHead.params2);
Touch.a();
return true;
default:
return false;
}
}
});
wm.addView(mView, params);
wm.addView(kView, params2);
}
[/java]
HUDView.class
[java]
@SuppressLint({"DrawAllocation"})
class HUDView extends ViewGroup {
Bitmap kangoo;
public HUDView(Context context, Bitmap bitmap) {
super(context);
this.kangoo = bitmap;
}
protected void onDraw(Canvas canvas) {
float GetWidth = MainActivity.GetWidth();
float GetHeight = MainActivity.GetHeight();
float f = GetHeight / 800.0f;
float f2 = GetWidth / 1280.0f;
super.onDraw(canvas);
Paint paint = new Paint();
int i, j;
if (Touch.getA()) {
i = ((int) (60.0f * f2)) + ((int) (100.0f * f2));
paint.setColor(0x88cccccc);
canvas.drawCircle(Touch.getX2() + ((float) i), Touch.getY2(), (float) ((int) (36.0f * f)), paint);
paint.setColor(0x440000ff);
canvas.drawCircle(Touch.getX2() + ((float) i), Touch.getY2(), (float) ((int) (31.0f * f)), paint);
paint.setColor(0x66ffffff);
canvas.drawCircle(Touch.getX2() + ((float) i), Touch.getY2(), (float) ((int) (24.0f * f)), paint);
paint.setColor(0x660000ff);
canvas.drawCircle(Touch.getX2() + ((float) i), Touch.getY2(), (float) ((int) (9.0f * f)), paint);
paint.setColor(0xee000000);
canvas.drawLine(Touch.getX(), Touch.getY() + ((float) ((int) (8.0f * f))), Touch.getX2() + ((float) i), Touch.getY2(), paint);
paint.setColor(0x9900ff00);
} else {
paint.setColor(0x22cccccc);
canvas.drawRect(0.0f, 0.0f, GetWidth, GetHeight, paint);
paint.setColor(0x99ff0000);
canvas.drawCircle(Touch.getX2() + 10.0f, Touch.getY2() + 10.0f, (float) ((int) (10.0f * f)), paint);
canvas.drawCircle(Touch.getX2() + 10.0f, Touch.getY2() + 10.0f, (float) ((int) (6.0f * f)), paint);
j = ((int) (60.0f * f2)) + ((int) (100.0f * f2));
paint.setStyle(Style.STROKE);
paint.setColor(SupportMenu.CATEGORY_MASK);
canvas.drawCircle(Touch.getX2() + ((float) j), Touch.getY2(), (float) ((int) (73.0f * f)), paint);
paint.setStyle(Style.FILL);
paint.setColor(0xeecccccc);
canvas.drawCircle(Touch.getX2() + ((float) j), Touch.getY2(), (float) ((int) (36.0f * f)), paint);
paint.setColor(0xaa0000ff);
canvas.drawCircle(Touch.getX2() + ((float) j), Touch.getY2(), (float) ((int) (31.0f * f)), paint);
paint.setColor(-1);
canvas.drawCircle(Touch.getX2() + ((float) j), Touch.getY2(), (float) ((int) (24.0f * f)), paint);
paint.setColor(0xaa0000ff);
canvas.drawCircle(Touch.getX2() + ((float) j), Touch.getY2(), (float) ((int) (9.0f * f)), paint);
paint.setColor(SupportMenu.CATEGORY_MASK);
canvas.drawLine(Touch.getX(), Touch.getY(), Touch.getX2() + ((float) j), Touch.getY2() - ((float) ((int) (8.0f * f))), paint);
paint.setColor(0x99ff0000);
}
canvas.drawRect((float) ((int) (573.0f * f2)), 0.0f, (float) ((int) (708.0f * f2)), (float) ((int) (88.0f * f)), paint);
invalidate();
}
[/java]
Manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="xyz.rsyqn.soccershoot">
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher"
android:supportsRtl="true"
android:largeHeap="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:screenOrientation="landscape" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name=".ChatHead" android:screenOrientation="landscape"></service>
</application>
</manifest>
Versão 4.4 - Imagem
Link - https://uploaddeimagens.com.br/imagens/imagem1-png–266
Versão 6.0 - Imagem
Link - https://uploaddeimagens.com.br/imagens/screenshot_20170615-124747-png
O que estou fazendo de errado ?