MainActivity:
package com.antonello.tavolaccio5;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.SystemClock;
import android.provider.Settings;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;
public class MainActivity extends AppCompatActivity {
Button bttCancel;
Button button;
RelativeLayout mainLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mainLayout=(RelativeLayout)findViewById(R.id.mainLayout);
button=(Button)findViewById(R.id.button);
bttCancel=(Button)findViewById(R.id.button2);
button.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
if(Build.VERSION.SDK_INT>=23 && !Settings.canDrawOverlays(getApplicationContext())){
Intent intent=new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:"+getPackageName()));
startActivityForResult(intent,0);
}else {
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent intent = new Intent(getApplicationContext(), Servizio.class);
PendingIntent pendingIntent = PendingIntent.getService(getApplicationContext(), 0, intent, 0);
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 1000 * 5,
pendingIntent);
}
}
});
bttCancel.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
AlarmManager alarmManager=(AlarmManager)getSystemService(ALARM_SERVICE);
Intent intent=new Intent(getApplicationContext(),Servizio.class);
PendingIntent pendingIntent=PendingIntent.getService(getApplicationContext(),0,intent,0);
alarmManager.cancel(pendingIntent);
if(pendingIntent!=null)pendingIntent.cancel();
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
if(Build.VERSION.SDK_INT>=23 && Settings.canDrawOverlays(getApplicationContext())){
AlarmManager alarmManager=(AlarmManager)getSystemService(ALARM_SERVICE);
Intent intent=new Intent(getApplicationContext(),Servizio.class);
PendingIntent pendingIntent=PendingIntent.getService(getApplicationContext(),0,intent,0);
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime()+1000*5,
pendingIntent);
}
}
}
Servizio.java
package com.antonello.tavolaccio5;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.graphics.BitmapFactory;
import android.graphics.PixelFormat;
import android.os.IBinder;
import android.os.SystemClock;
import android.support.annotation.Nullable;
import android.view.View;
import android.view.WindowManager;
/**
* Created by Antonello on 19/05/2017.
*/
public class Servizio extends Service {
RoundedImage roundedImage;
WindowManager.LayoutParams wParams;
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId){
final WindowManager windowManager=(WindowManager)getSystemService(WINDOW_SERVICE);
wParams=new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT
);
roundedImage = new RoundedImage(this, BitmapFactory.decodeResource(getResources(),R.drawable.scrofalo),100);
roundedImage.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
windowManager.removeView(v);
//roundedImage=null;
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent intent = new Intent(getApplicationContext(), Servizio.class);
PendingIntent pendingIntent = PendingIntent.getService(getApplicationContext(), 0, intent, 0);
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 1000 * 5,
pendingIntent);
}
});
windowManager.addView(roundedImage,wParams);
stopSelf();
return START_NOT_STICKY;
}
}
RoundedImage.java
package com.antonello.tavolaccio5;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
/**
* Created by Antonello on 19/05/2017.
*/
public class RoundedImage extends android.support.v7.widget.AppCompatImageView {
private Bitmap figura;
private int radius;
public RoundedImage(Context context, Bitmap figura, int radius){
super(context);
this.figura=figura;
this.radius=radius;
Bitmap bitmap=Bitmap.createBitmap(radius,radius,Bitmap.Config.ARGB_8888);
Paint paint=new Paint();
Canvas canvas=new Canvas(bitmap);
canvas.drawCircle(bitmap.getWidth()/2,bitmap.getHeight()/2,bitmap.getWidth()/2,paint);
Rect fromRect=new Rect(0,0,figura.getWidth(),figura.getHeight());
Rect toRect=new Rect(0,0,bitmap.getWidth(),bitmap.getHeight());
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(figura,fromRect,toRect,paint);
setImageBitmap(bitmap);
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainLayout"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.antonello.tavolaccio5.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:id="@+id/textView" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView"
android:layout_centerHorizontal="true"
android:layout_marginTop="99dp"
android:text="Button" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/button"
android:layout_alignStart="@+id/button"
android:layout_below="@+id/button"
android:layout_marginTop="120dp"
android:text="Button" />
</RelativeLayout>
Nessun commento:
Posta un commento