From adf7d3b5533896cc71e1b3c69614e63cb9d9e34e Mon Sep 17 00:00:00 2001 From: "2392823348@qq.com" <2392823348@qq.com> Date: Thu, 6 Sep 2018 10:44:21 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E5=9C=86=E5=BD=A2vi?= =?UTF-8?q?ew=20commit=20ldc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/caches/build_file_checksums.ser | Bin 545 -> 545 bytes .idea/misc.xml | 2 +- app/src/main/AndroidManifest.xml | 5 ++ .../main/java/com/ldc/demo/MainActivity.java | 79 +++++++++++++++++- app/src/main/java/com/ldc/demo/MyService.java | 55 ++++++++++++ .../main/java/com/ldc/demo/ui/CircleView.java | 69 +++++++++++++++ app/src/main/res/layout/activity_main.xml | 28 +++++-- app/src/main/res/values/attrs.xml | 8 ++ app/src/main/res/values/styles.xml | 2 +- 9 files changed, 237 insertions(+), 11 deletions(-) create mode 100644 app/src/main/java/com/ldc/demo/MyService.java create mode 100644 app/src/main/java/com/ldc/demo/ui/CircleView.java create mode 100644 app/src/main/res/values/attrs.xml diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index 637c01b2cfc66b2366e5e5951352bde6acae7c90..51b9b9b95a8fd0a55a32d6c9553012d569aa9e53 100644 GIT binary patch delta 15 XcmZ3;vXEuM43_10o*HeO)5-_{HI4@4 delta 15 XcmZ3;vXEuM43@>S*lui`)5-_{F{B1% diff --git a/.idea/misc.xml b/.idea/misc.xml index 99202cc..c0f68ed 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -25,7 +25,7 @@ - + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0a52648..00e0690 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,6 +16,11 @@ + + \ No newline at end of file diff --git a/app/src/main/java/com/ldc/demo/MainActivity.java b/app/src/main/java/com/ldc/demo/MainActivity.java index 0547718..310c02a 100644 --- a/app/src/main/java/com/ldc/demo/MainActivity.java +++ b/app/src/main/java/com/ldc/demo/MainActivity.java @@ -1,13 +1,90 @@ package com.ldc.demo; +import android.content.BroadcastReceiver; +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.content.ServiceConnection; +import android.os.IBinder; +import android.support.v4.content.LocalBroadcastManager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.Toast; + +public class MainActivity extends AppCompatActivity implements View.OnClickListener{ + + protected MyService.MyBinder mMyBinder; + private MyChangeBroadcastReceiver mMyBroadcastReceiver; -public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); + Button bt1= (Button) findViewById(R.id.bt_startService); + Button bt2= (Button) findViewById(R.id.bt_stopService); + + bt1.setOnClickListener(this); + bt2.setOnClickListener(this); + bindMyService(); + registBroadcast(); + } + + private void registBroadcast() { + mMyBroadcastReceiver=new MyChangeBroadcastReceiver(); + IntentFilter intenFilter=new IntentFilter(); + intenFilter.addAction("notifi"); + intenFilter.addAction("stopN"); + LocalBroadcastManager.getInstance(this).registerReceiver(mMyBroadcastReceiver,intenFilter); + } + + private void bindMyService() { + Intent intent=new Intent(this,MyService.class); + bindService(intent,mConn,BIND_AUTO_CREATE); + } + + ServiceConnection mConn=new ServiceConnection() { + @Override + public void onServiceConnected(ComponentName componentName, IBinder iBinder) { + mMyBinder= (MyService.MyBinder) iBinder; + } + + @Override + public void onServiceDisconnected(ComponentName componentName) { + + } + }; + @Override + public void onClick(View v) { + switch (v.getId()) + { + case R.id.bt_startService: + mMyBinder.NotifiStart(); + Toast.makeText(this, "开启通知", Toast.LENGTH_SHORT).show(); + break; + case R.id.bt_stopService: + mMyBinder.NotifiStop(); + Toast.makeText(this, "关闭通知", Toast.LENGTH_SHORT).show(); + break; + } + } + + private class MyChangeBroadcastReceiver extends BroadcastReceiver{ + @Override + public void onReceive(Context context, Intent intent) { + switch (intent.getAction()) + { + case "notifi": + Toast.makeText(context, "顶部通知已经打开", Toast.LENGTH_SHORT).show(); + break; + case "stopN": + Toast.makeText(context, "顶部通知已经关闭", Toast.LENGTH_SHORT).show(); + break; + + } + } } } diff --git a/app/src/main/java/com/ldc/demo/MyService.java b/app/src/main/java/com/ldc/demo/MyService.java new file mode 100644 index 0000000..9449cdc --- /dev/null +++ b/app/src/main/java/com/ldc/demo/MyService.java @@ -0,0 +1,55 @@ +package com.ldc.demo; + +import android.app.Notification; +import android.app.PendingIntent; +import android.app.Service; +import android.content.Intent; +import android.os.Binder; +import android.os.IBinder; +import android.support.v4.app.NotificationCompat; +import android.support.v4.content.LocalBroadcastManager; + +public class MyService extends Service { + public MyService() { + } + + @Override + public IBinder onBind(Intent intent) { + // TODO: Return the communication channel to the service. +// throw new UnsupportedOperationException("Not yet implemented") + return new MyBinder(); + } + + public class MyBinder extends Binder { + + public void connService() + { + } + public void NotifiStart() + { + Intent intent=new Intent(MyService.this,MainActivity.class); + PendingIntent pi=PendingIntent.getActivity(MyService.this,0,intent,0); + Notification notifi=new NotificationCompat.Builder(MyService.this) + .setContentTitle("我他妈看今天谁敢念诗") + .setContentText("苟利国家生死以,岂因福祸避趋之!") + .setSmallIcon(R.mipmap.ic_launcher) + .setContentIntent(pi) + .build(); + startForeground(1,notifi); + + + Intent intent1=new Intent("notifi"); + LocalBroadcastManager.getInstance(MyService.this).sendBroadcast(intent1); + } + public void NotifiStop() + { + + Intent intent2=new Intent("stopN"); + LocalBroadcastManager.getInstance(MyService.this).sendBroadcast(intent2); + stopForeground(true); + + } + + + } +} diff --git a/app/src/main/java/com/ldc/demo/ui/CircleView.java b/app/src/main/java/com/ldc/demo/ui/CircleView.java new file mode 100644 index 0000000..b4d0112 --- /dev/null +++ b/app/src/main/java/com/ldc/demo/ui/CircleView.java @@ -0,0 +1,69 @@ +package com.ldc.demo.ui; + +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.support.annotation.Nullable; +import android.util.AttributeSet; +import android.view.View; + +import com.ldc.demo.R; + +public class CircleView extends View { + private int mColor = Color.RED; + private Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + + public CircleView(Context context) { + super(context); + init(); + } + + public CircleView(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public CircleView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + /* TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CircleView); + mColor = a.getColor(R.styleable.CircleView_circle_color, Color.RED); + a.recycle();*/ + init(); + } + + private void init() { + mPaint.setColor(mColor); + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + int widthSpecMode = MeasureSpec.getMode(widthMeasureSpec); + int widthSpecSize = MeasureSpec.getSize(widthMeasureSpec); + int heightSpecMode = MeasureSpec.getMode(heightMeasureSpec); + int heightSpecSize = MeasureSpec.getSize(heightMeasureSpec); + if (widthSpecMode == MeasureSpec.AT_MOST + && heightSpecMode == MeasureSpec.AT_MOST) { + setMeasuredDimension(200, 200); + } else if (widthSpecMode == MeasureSpec.AT_MOST) { + setMeasuredDimension(200, heightSpecSize); + } else if (heightSpecMode == MeasureSpec.AT_MOST) { + setMeasuredDimension(widthSpecSize, 200); + } + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + final int paddingLeft = getPaddingLeft(); + final int paddingRight = getPaddingRight(); + final int paddingTop = getPaddingTop(); + final int paddingBottom = getPaddingBottom(); + int width = getWidth() - paddingLeft - paddingRight; + int height = getHeight() - paddingTop - paddingBottom; + int radius = Math.min(width, height) / 2; + canvas.drawCircle(paddingLeft + width / 2, paddingTop + height / 2, + radius, mPaint); + } +} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 84f1951..5d4aaba 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,18 +1,30 @@ - - + android:text="start" /> - \ No newline at end of file +