From: snickersun Date: Sun, 9 Feb 2020 12:33:30 +0000 (+0800) Subject: 添加资源文件及提醒窗口 X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=c6a580f11c13a7b305605abee2ff90260369e624;p=protocol_srv.git 添加资源文件及提醒窗口 --- diff --git a/app/src/main/assets/ring_msg.mp3 b/app/src/main/assets/ring_msg.mp3 new file mode 100644 index 00000000..05f725c6 Binary files /dev/null and b/app/src/main/assets/ring_msg.mp3 differ diff --git a/app/src/main/java/com/enqualcomm/support/utils/CustomDialog.java b/app/src/main/java/com/enqualcomm/support/utils/CustomDialog.java new file mode 100644 index 00000000..be76c00b --- /dev/null +++ b/app/src/main/java/com/enqualcomm/support/utils/CustomDialog.java @@ -0,0 +1,202 @@ + +package com.enqualcomm.support.utils; + +import android.app.Dialog; +import android.content.Context; +import android.content.DialogInterface.OnClickListener; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.ViewGroup.LayoutParams; +import android.widget.Button; +import android.widget.ImageButton; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.enqualcomm.support.R; + +public class CustomDialog extends Dialog { + public CustomDialog(Context var1) { + super(var1); + } + + public CustomDialog(Context var1, int var2) { + super(var1, var2); + } + + public static class Builder { + private int app_id; + private View contentView; + private Context context; + private CustomDialog mDialog; + private String message; + private OnClickListener negativeButtonClickListener; + private String negativeButtonText; + private OnClickListener positiveButtonClickListener; + private String positiveButtonText; + private String title; + + public Builder(Context var1) { + this.context = var1; + } + + private CustomDialog getDialogInstance() { + + this.mDialog = new CustomDialog(this.context, R.style.Dialog); + LayoutInflater var1 = (LayoutInflater)this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + View view; + if (this.app_id == 2) { + view = var1.inflate(R.layout.dialog_misscall_layout, (ViewGroup)null); + } else { + view = var1.inflate(R.layout.dialog_normal_layout, (ViewGroup)null); + } + + this.mDialog.addContentView(view, new LayoutParams(-1, -2)); + ((TextView)view.findViewById(R.id.title)).setText(this.title); + final CustomDialog dialog = this.mDialog; + if (this.positiveButtonText != null) { + if (this.app_id != 2) { + ((ImageButton)view.findViewById(R.id.positiveButton)).setImageResource(R.drawable.btn_ok_selector); + if (this.positiveButtonClickListener != null) { + + ((ImageButton)view.findViewById(R.id.positiveButton)).setOnClickListener(new android.view.View.OnClickListener() { + public void onClick(View var1) { + Builder.this.positiveButtonClickListener.onClick(dialog, -1); + } + }); + } + } else if (this.positiveButtonClickListener != null) { + + ((Button)view.findViewById(R.id.positiveButton)).setOnClickListener(new android.view.View.OnClickListener() { + public void onClick(View var1) { + Builder.this.positiveButtonClickListener.onClick(dialog, -1); + } + }); + } + } else { + view.findViewById(R.id.positiveButton).setVisibility(View.GONE); + } + + if (this.negativeButtonText != null) { + ((ImageButton)view.findViewById(R.id.negativeButton)).setImageResource(R.drawable.btn_cancel_selector); + if (this.negativeButtonClickListener != null) { + + ((ImageButton)view.findViewById(R.id.negativeButton)).setOnClickListener(new android.view.View.OnClickListener() { + public void onClick(View var1) { + Builder.this.negativeButtonClickListener.onClick(dialog, -2); + } + }); + } + } else { + view.findViewById(R.id.negativeButton).setVisibility(View.GONE); + } + + if (this.message != null) { + ((TextView)view.findViewById(R.id.message)).setText(this.message); + } else if (this.contentView != null) { + ((LinearLayout)view.findViewById(R.id.content)).removeAllViews(); + ((LinearLayout)view.findViewById(R.id.content)).addView(this.contentView, new LayoutParams(-1, -1)); + } + + this.mDialog.setContentView(view); + return this.mDialog; + } + + public CustomDialog create() { + if (this.mDialog == null) { + synchronized(CustomDialog.class){} + + Throwable custmExeception; + boolean var10001; + label144: { + try { + if (this.mDialog == null) { + this.mDialog = this.getDialogInstance(); + } + } catch (Throwable var13) { + custmExeception = var13; + var10001 = false; + break label144; + } + + label141: + try { + return this.mDialog; + } catch (Throwable var12) { + custmExeception = var12; + var10001 = false; + break label141; + } + } + + while(true) { + Throwable var1 = custmExeception; + + try { + throw var1; + } catch (Throwable var11) { + custmExeception = var11; + var10001 = false; + continue; + } + } + } else { + return this.mDialog; + } + } + + public CustomDialog.Builder setApp(int appid) { + this.app_id = appid; + return this; + } + + public CustomDialog.Builder setContentView(View view) { + this.contentView = view; + return this; + } + + public CustomDialog.Builder setMessage(int resId) { + this.message = (String)this.context.getText(resId); + return this; + } + + public CustomDialog.Builder setMessage(String msg) { + this.message = msg; + return this; + } + + public CustomDialog.Builder setNegativeButton(int resid, OnClickListener onclicklistener) { + this.negativeButtonText = (String)this.context.getText(resid); + this.negativeButtonClickListener = onclicklistener; + return this; + } + + public CustomDialog.Builder setNegativeButton(String txt, OnClickListener onclicklistener) { + this.negativeButtonText = txt; + this.negativeButtonClickListener = onclicklistener; + return this; + } + + public CustomDialog.Builder setPositiveButton(int resid, OnClickListener onclicklistener) { + this.positiveButtonText = (String)this.context.getText(resid); + this.positiveButtonClickListener = onclicklistener; + return this; + } + + public CustomDialog.Builder setPositiveButton(String txt, OnClickListener onclicklistener) { + this.positiveButtonText = txt; + this.positiveButtonClickListener = onclicklistener; + return this; + } + + public CustomDialog.Builder setTitle(int resid) { + this.title = (String)this.context.getText(resid); + return this; + } + + public CustomDialog.Builder setTitle(String txt) { + this.title = txt; + return this; + } + } +} diff --git a/app/src/main/java/com/enqualcomm/support/utils/GetContact.java b/app/src/main/java/com/enqualcomm/support/utils/GetContact.java new file mode 100644 index 00000000..942d5ca5 --- /dev/null +++ b/app/src/main/java/com/enqualcomm/support/utils/GetContact.java @@ -0,0 +1,44 @@ +package com.enqualcomm.support.utils; + +import android.content.Context; +import android.database.Cursor; +import com.enqualcomm.support.ICContentProvider; +import com.enqualcomm.support.bean.Contact; +import rx.Observable; +import rx.Subscriber; + +public class GetContact implements Observable.OnSubscribe { + String contactNumber; + + Context context; + + public GetContact(String paramString, Context paramContext) { + this.contactNumber = paramString; + this.context = paramContext; + } + + public void call(Subscriber paramSubscriber) { + Cursor cursor = this.context.getContentResolver().query(ICContentProvider.CONTACT_URI, null, "NUMBER=? AND CATEGORY NOT IN (?,?)", new String[] { this.contactNumber, "5", "6" }, null); + Contact contact1 = null; + Contact contact2 = null; + if (cursor != null) { + for (contact1 = contact2; cursor.moveToNext(); contact1 = new Contact(cursor.getInt(1), cursor.getString(2), cursor.getString(3), cursor.getString(4), cursor.getString(5))); + cursor.close(); + } + contact2 = contact1; + if (contact1 == null) { + if (this.contactNumber.contains("@")) + this.contactNumber = this.contactNumber.substring(2); + Cursor cursor1 = this.context.getContentResolver().query(ICContentProvider.CONTACT_URI, null, "EXTRA=?", new String[] { this.contactNumber }, null); + contact2 = contact1; + if (cursor1 != null) { + while (cursor1.moveToNext()) + contact1 = new Contact(cursor1.getInt(1), cursor1.getString(2), cursor1.getString(3), cursor1.getString(4), cursor1.getString(5)); + cursor.close(); + contact2 = contact1; + } + } + paramSubscriber.onNext(contact2); + } +} + diff --git a/app/src/main/java/com/enqualcomm/support/utils/MissedCallContentObserver.java b/app/src/main/java/com/enqualcomm/support/utils/MissedCallContentObserver.java new file mode 100644 index 00000000..b040d209 --- /dev/null +++ b/app/src/main/java/com/enqualcomm/support/utils/MissedCallContentObserver.java @@ -0,0 +1,140 @@ +package com.enqualcomm.support.utils; +import android.content.Context; +import android.content.Intent; +import android.database.ContentObserver; +import android.database.Cursor; +import android.os.Handler; +import android.os.Message; +import android.provider.CallLog.Calls; +import com.enqualcomm.support.Constants; +import com.enqualcomm.support.bean.Contact; +import com.enqualcomm.support.bean.Runtime; +import java.text.SimpleDateFormat; +import java.util.Date; + +public class MissedCallContentObserver extends ContentObserver { + private static final int MISSED_CALL_MSG = 1; + private static final String[] PROJECT = new String[]{"name", "number", "type", "new", "date"}; + private Context mContext; + private Handler mHandler = new Handler() { + public void handleMessage(Message var1) { + int var2 = var1.what; + boolean var3 = true; + if (var2 == 1) { + MissedCallContentObserver.DataHolder var5 = (MissedCallContentObserver.DataHolder)var1.obj; + StringBuilder var4 = new StringBuilder(); + var4.append("you have a missed call, name : "); + var4.append(var5.contact.name); + var4.append(", number: "); + var4.append(var5.contact.number); + var4.append(", date: "); + var4.append(var5.date); + Logger.i(var4.toString()); + var2 = MissedCallContentObserver.this.mRuntime.getContextProxy().getTelephonyManager().getCallState(); + if (MissedCallContentObserver.this.mRuntime.getBatteryLow() || 1 == var2 || 2 == var2) { + var3 = false; + } + + if (Boolean.valueOf(var3)) { + Intent var6 = new Intent("com.enqualcomm.support.ACTION_MISSED_CALL_GET"); + var6.putExtra("contact", var5.contact); + var6.putExtra("date", var5.date); + MissedCallContentObserver.this.mContext.sendBroadcast(var6); + } + } + + } + }; + private long mMissedCallDate; + private Runtime mRuntime; + + public MissedCallContentObserver(Context var1, Runtime var2, Handler var3) { + super(var3); + this.mContext = var1; + this.mRuntime = var2; + } + + private boolean checkSameItem(long var1) { + boolean var3; + if (this.mMissedCallDate == var1) { + var3 = true; + } else { + var3 = false; + } + + return var3; + } + + public void onChange(boolean var1) { + Cursor var2 = this.mContext.getContentResolver().query(Calls.CONTENT_URI, PROJECT, (String)null, (String[])null, "date DESC"); + if (var2 != null) { + if (var2.moveToFirst()) { + switch(var2.getInt(var2.getColumnIndex("type"))) { + case 1: + Logger.i("incoming type"); + break; + case 2: + Logger.i("outgoing type"); + break; + case 3: + Logger.i("missed type"); + if (var2.getInt(var2.getColumnIndex("new")) == 1) { + String var3 = var2.getString(var2.getColumnIndex("number")); + var2.getString(var2.getColumnIndex("name")); + long var4 = var2.getLong(var2.getColumnIndex("date")); + if (!this.checkSameItem(var4)) { + Logger.i(" not the same missed!"); + this.mMissedCallDate = var4; + Date var6 = new Date(var4); + (new SimpleDateFormat("yyyy-MM-dd;HH:mm:ss")).format(var6); + Cursor var13 = this.mContext.getContentResolver().query(Constants.CONTACT_URI, (String[])null, "CATEGORY IN (1,2,3)", (String[])null, (String)null); + if (var13 != null) { + StringBuilder var7 = new StringBuilder(); + var7.append("cursor1.size = "); + var7.append(var13.getCount()); + Logger.i(var7.toString()); + + while(var13.moveToNext()) { + String var8 = var13.getString(3); + if (var8.contains(var3) || var3.contains(var8)) { + int var9 = var13.getInt(1); + String var10 = var13.getString(2); + String var14 = var13.getString(4); + String var11 = var13.getString(5); + StringBuilder var12 = new StringBuilder(); + var12.append("name="); + var12.append(var10); + var12.append("...number="); + var12.append(var8); + Logger.i(var12.toString()); + new Contact(var9, var10, var3, var14, var11); + break; + } + } + + var13.close(); + } else { + Logger.i("don't know who called"); + } + } else { + Logger.i(" The same missed call, ignore it!"); + } + } + } + } + + var2.close(); + } + + } + + private class DataHolder { + public Contact contact; + public String date; + + public DataHolder(Contact var2, String var3) { + this.contact = var2; + this.date = var3; + } + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_bombbox.xml b/app/src/main/res/drawable/bg_bombbox.xml new file mode 100644 index 00000000..7d1601d4 --- /dev/null +++ b/app/src/main/res/drawable/bg_bombbox.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/btn_cancel_normal.png b/app/src/main/res/drawable/btn_cancel_normal.png new file mode 100644 index 00000000..3bdc4d10 Binary files /dev/null and b/app/src/main/res/drawable/btn_cancel_normal.png differ diff --git a/app/src/main/res/drawable/btn_cancel_pressed.png b/app/src/main/res/drawable/btn_cancel_pressed.png new file mode 100644 index 00000000..71bff72c Binary files /dev/null and b/app/src/main/res/drawable/btn_cancel_pressed.png differ diff --git a/app/src/main/res/drawable/btn_cancel_red_normal.png b/app/src/main/res/drawable/btn_cancel_red_normal.png new file mode 100644 index 00000000..373c493c Binary files /dev/null and b/app/src/main/res/drawable/btn_cancel_red_normal.png differ diff --git a/app/src/main/res/drawable/btn_cancel_red_pressed.png b/app/src/main/res/drawable/btn_cancel_red_pressed.png new file mode 100644 index 00000000..eaca1458 Binary files /dev/null and b/app/src/main/res/drawable/btn_cancel_red_pressed.png differ diff --git a/app/src/main/res/drawable/btn_cancel_red_selector.xml b/app/src/main/res/drawable/btn_cancel_red_selector.xml new file mode 100644 index 00000000..7adab2a5 --- /dev/null +++ b/app/src/main/res/drawable/btn_cancel_red_selector.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/btn_cancel_selector.xml b/app/src/main/res/drawable/btn_cancel_selector.xml new file mode 100644 index 00000000..568fd961 --- /dev/null +++ b/app/src/main/res/drawable/btn_cancel_selector.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/btn_ok_normal.png b/app/src/main/res/drawable/btn_ok_normal.png new file mode 100644 index 00000000..d99de5d5 Binary files /dev/null and b/app/src/main/res/drawable/btn_ok_normal.png differ diff --git a/app/src/main/res/drawable/btn_ok_pressed.png b/app/src/main/res/drawable/btn_ok_pressed.png new file mode 100644 index 00000000..3b54147f Binary files /dev/null and b/app/src/main/res/drawable/btn_ok_pressed.png differ diff --git a/app/src/main/res/drawable/btn_ok_selector.xml b/app/src/main/res/drawable/btn_ok_selector.xml new file mode 100644 index 00000000..7af5d9f1 --- /dev/null +++ b/app/src/main/res/drawable/btn_ok_selector.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/btn_query.xml b/app/src/main/res/drawable/btn_query.xml new file mode 100644 index 00000000..a9b93599 --- /dev/null +++ b/app/src/main/res/drawable/btn_query.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/dialog_bottom_bg.xml b/app/src/main/res/drawable/dialog_bottom_bg.xml new file mode 100644 index 00000000..91d98826 --- /dev/null +++ b/app/src/main/res/drawable/dialog_bottom_bg.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/notification_bottom_bg.xml b/app/src/main/res/drawable/notification_bottom_bg.xml new file mode 100644 index 00000000..82e6c478 --- /dev/null +++ b/app/src/main/res/drawable/notification_bottom_bg.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/notification_end_bottom_bg.xml b/app/src/main/res/drawable/notification_end_bottom_bg.xml new file mode 100644 index 00000000..7955f130 --- /dev/null +++ b/app/src/main/res/drawable/notification_end_bottom_bg.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/notification_title_bottom_bg.xml b/app/src/main/res/drawable/notification_title_bottom_bg.xml new file mode 100644 index 00000000..ea0f1a59 --- /dev/null +++ b/app/src/main/res/drawable/notification_title_bottom_bg.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_misscall_layout.xml b/app/src/main/res/layout/dialog_misscall_layout.xml new file mode 100644 index 00000000..c70307cc --- /dev/null +++ b/app/src/main/res/layout/dialog_misscall_layout.xml @@ -0,0 +1,15 @@ + + + + + + + + + +