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