From 87068baa349e6da284e770ac55d3967e37e47a3c Mon Sep 17 00:00:00 2001 From: bezloginu Date: Sat, 18 Feb 2017 02:38:34 +0100 Subject: [PATCH] Initial implementation --- .gitignore | 5 +- app/.gitignore | 1 + app/build.gradle | 29 + app/proguard-rules.pro | 17 + app/src/main/AndroidManifest.xml | 30 + app/src/main/ic_launcher-web.png | Bin 0 -> 42754 bytes .../microntek/mtcser/BTServiceInf.java | 1110 +++++++++++++++++ .../mtcdialer/BluetoothServiceActivity.java | 75 ++ .../java/com/f1x/mtcdialer/DialActivity.java | 50 + .../com/f1x/mtcdialer/PhoneBookActivity.java | 85 ++ .../com/f1x/mtcdialer/PhoneBookReceiver.java | 57 + .../VoiceSelectionCallerActivity.java | 83 ++ .../activity_voice_selection_caller.xml | 21 + app/src/main/res/layout/layout_activity.xml | 8 + app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 4184 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2612 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 5888 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 9229 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 13363 bytes app/src/main/res/values-pl/strings.xml | 9 + app/src/main/res/values-w820dp/dimens.xml | 6 + app/src/main/res/values/colors.xml | 6 + app/src/main/res/values/dimens.xml | 5 + app/src/main/res/values/strings.xml | 9 + app/src/main/res/values/styles.xml | 11 + build.gradle | 23 + gradle.properties | 17 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 53636 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 160 +++ gradlew.bat | 90 ++ settings.gradle | 1 + 32 files changed, 1913 insertions(+), 1 deletion(-) create mode 100644 app/.gitignore create mode 100644 app/build.gradle create mode 100644 app/proguard-rules.pro create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/ic_launcher-web.png create mode 100644 app/src/main/java/android/microntek/mtcser/BTServiceInf.java create mode 100644 app/src/main/java/com/f1x/mtcdialer/BluetoothServiceActivity.java create mode 100644 app/src/main/java/com/f1x/mtcdialer/DialActivity.java create mode 100644 app/src/main/java/com/f1x/mtcdialer/PhoneBookActivity.java create mode 100644 app/src/main/java/com/f1x/mtcdialer/PhoneBookReceiver.java create mode 100644 app/src/main/java/com/f1x/mtcdialer/VoiceSelectionCallerActivity.java create mode 100644 app/src/main/res/layout/activity_voice_selection_caller.xml create mode 100644 app/src/main/res/layout/layout_activity.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 app/src/main/res/values-pl/strings.xml create mode 100644 app/src/main/res/values-w820dp/dimens.xml create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/dimens.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/styles.xml create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle diff --git a/.gitignore b/.gitignore index f6b286c..1ee9933 100644 --- a/.gitignore +++ b/.gitignore @@ -34,7 +34,10 @@ captures/ # Intellij *.iml -.idea/workspace.xml +.idea + # Keystore files *.jks + +.DS_Store diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..874f9f6 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,29 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 25 + buildToolsVersion "24.0.1" + defaultConfig { + applicationId "com.f1x.mtcdialer" + minSdkVersion 19 + targetSdkVersion 25 + versionCode 1 + versionName "1.0" + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + compile fileTree(dir: 'libs', include: ['*.jar']) + androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { + exclude group: 'com.android.support', module: 'support-annotations' + }) + compile 'com.android.support:appcompat-v7:25.1.1' + testCompile 'junit:junit:4.12' +} diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..960178b --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,17 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in C:\Users\COMPUTER\AppData\Local\Android\Sdk/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..25cd2d1 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/ic_launcher-web.png b/app/src/main/ic_launcher-web.png new file mode 100644 index 0000000000000000000000000000000000000000..d28d49bd2efdcf585cf638d9f1b0b2c7afaadb05 GIT binary patch literal 42754 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 N*4XlN@hR8v{|A$o9o+x` literal 0 HcmV?d00001 diff --git a/app/src/main/java/android/microntek/mtcser/BTServiceInf.java b/app/src/main/java/android/microntek/mtcser/BTServiceInf.java new file mode 100644 index 0000000..2b3d896 --- /dev/null +++ b/app/src/main/java/android/microntek/mtcser/BTServiceInf.java @@ -0,0 +1,1110 @@ +package android.microntek.mtcser; + +import android.os.Binder; +import android.os.IBinder; +import android.os.IInterface; +import android.os.Parcel; +import android.os.RemoteException; +import java.util.List; + +public interface BTServiceInf extends IInterface { + + public static abstract class Stub extends Binder implements BTServiceInf { + + private static class Proxy implements BTServiceInf { + private IBinder mRemote; + + Proxy(IBinder remote) { + this.mRemote = remote; + } + + public IBinder asBinder() { + return this.mRemote; + } + + public void init() throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(1, _data, _reply, 0); + _reply.readException(); + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public byte getBTState() throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(2, _data, _reply, 0); + _reply.readException(); + byte _result = _reply.readByte(); + return _result; + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public byte getAVState() throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(3, _data, _reply, 0); + _reply.readException(); + byte _result = _reply.readByte(); + return _result; + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public String getDialOutNum() throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(4, _data, _reply, 0); + _reply.readException(); + String _result = _reply.readString(); + return _result; + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public String getCallInNum() throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(5, _data, _reply, 0); + _reply.readException(); + String _result = _reply.readString(); + return _result; + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public String getPhoneNum() throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(6, _data, _reply, 0); + _reply.readException(); + String _result = _reply.readString(); + return _result; + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public long getNowDevAddr() throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(7, _data, _reply, 0); + _reply.readException(); + long _result = _reply.readLong(); + return _result; + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public String getNowDevName() throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(8, _data, _reply, 0); + _reply.readException(); + String _result = _reply.readString(); + return _result; + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public void avPlayPause() throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(9, _data, _reply, 0); + _reply.readException(); + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public void avPlayStop() throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(10, _data, _reply, 0); + _reply.readException(); + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public void avPlayPrev() throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(11, _data, _reply, 0); + _reply.readException(); + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public void avPlayNext() throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(12, _data, _reply, 0); + _reply.readException(); + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public void answerCall() throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(13, _data, _reply, 0); + _reply.readException(); + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public void hangupCall() throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(14, _data, _reply, 0); + _reply.readException(); + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public void rejectCall() throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(15, _data, _reply, 0); + _reply.readException(); + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public void switchVoice() throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(16, _data, _reply, 0); + _reply.readException(); + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public void syncPhonebook() throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(17, _data, _reply, 0); + _reply.readException(); + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public String getModuleName() throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(18, _data, _reply, 0); + _reply.readException(); + String _result = _reply.readString(); + return _result; + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public String getModulePassword() throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(19, _data, _reply, 0); + _reply.readException(); + String _result = _reply.readString(); + return _result; + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public void setModuleName(String name) throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + _data.writeString(name); + this.mRemote.transact(20, _data, _reply, 0); + _reply.readException(); + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public void setModulePassword(String password) throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + _data.writeString(password); + this.mRemote.transact(21, _data, _reply, 0); + _reply.readException(); + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public void setAutoConnect(boolean auto) throws RemoteException { + int i = 0; + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + if (auto) { + i = 1; + } + _data.writeInt(i); + this.mRemote.transact(22, _data, _reply, 0); + _reply.readException(); + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public boolean getAutoConnect() throws RemoteException { + boolean _result = false; + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(23, _data, _reply, 0); + _reply.readException(); + if (_reply.readInt() != 0) { + _result = true; + } + _reply.recycle(); + _data.recycle(); + } catch (Throwable th) { + _reply.recycle(); + _data.recycle(); + } + + return _result; + } + + public void setAutoAnswer(boolean auto) throws RemoteException { + int i = 0; + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + if (auto) { + i = 1; + } + _data.writeInt(i); + this.mRemote.transact(24, _data, _reply, 0); + _reply.readException(); + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public boolean getAutoAnswer() throws RemoteException { + boolean _result = false; + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(25, _data, _reply, 0); + _reply.readException(); + if (_reply.readInt() != 0) { + _result = true; + } + _reply.recycle(); + _data.recycle(); + } catch (Throwable th) { + _reply.recycle(); + _data.recycle(); + } + + return _result; + } + + public void connectBT(String mac) throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + _data.writeString(mac); + this.mRemote.transact(26, _data, _reply, 0); + _reply.readException(); + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public void disconnectBT(String mac) throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + _data.writeString(mac); + this.mRemote.transact(27, _data, _reply, 0); + _reply.readException(); + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public void connectOBD(String mac) throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + _data.writeString(mac); + this.mRemote.transact(28, _data, _reply, 0); + _reply.readException(); + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public void disconnectOBD(String mac) throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + _data.writeString(mac); + this.mRemote.transact(29, _data, _reply, 0); + _reply.readException(); + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public void deleteOBD(String mac) throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + _data.writeString(mac); + this.mRemote.transact(30, _data, _reply, 0); + _reply.readException(); + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public void deleteBT(String mac) throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + _data.writeString(mac); + this.mRemote.transact(31, _data, _reply, 0); + _reply.readException(); + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public void syncMatchList() throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(32, _data, _reply, 0); + _reply.readException(); + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public List getMatchList() throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(33, _data, _reply, 0); + _reply.readException(); + List _result = _reply.createStringArrayList(); + return _result; + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public List getDeviceList() throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(34, _data, _reply, 0); + _reply.readException(); + List _result = _reply.createStringArrayList(); + return _result; + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public List getHistoryList() throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(35, _data, _reply, 0); + _reply.readException(); + List _result = _reply.createStringArrayList(); + return _result; + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public List getPhoneBookList() throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(36, _data, _reply, 0); + _reply.readException(); + List _result = _reply.createStringArrayList(); + return _result; + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public void setPhoneBookList(List list) throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + _data.writeStringList(list); + this.mRemote.transact(37, _data, _reply, 0); + _reply.readException(); + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public void deleteHistory(int idx) throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + _data.writeInt(idx); + this.mRemote.transact(38, _data, _reply, 0); + _reply.readException(); + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public void deleteHistoryAll() throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(39, _data, _reply, 0); + _reply.readException(); + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public void musicMute() throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(40, _data, _reply, 0); + _reply.readException(); + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public void musicUnmute() throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(41, _data, _reply, 0); + _reply.readException(); + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public void scanStart() throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(42, _data, _reply, 0); + _reply.readException(); + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public void scanStop() throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(43, _data, _reply, 0); + _reply.readException(); + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public void dialOut(String s) throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + _data.writeString(s); + this.mRemote.transact(44, _data, _reply, 0); + _reply.readException(); + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public void dialOutSub(char b) throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + _data.writeInt(b); + this.mRemote.transact(45, _data, _reply, 0); + _reply.readException(); + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public void reDial() throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(46, _data, _reply, 0); + _reply.readException(); + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public String getMusicInfo() throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(47, _data, _reply, 0); + _reply.readException(); + String _result = _reply.readString(); + return _result; + } finally { + _reply.recycle(); + _data.recycle(); + } + } + + public int getOBDstate() throws RemoteException { + Parcel _data = Parcel.obtain(); + Parcel _reply = Parcel.obtain(); + try { + _data.writeInterfaceToken("android.microntek.mtcser.BTServiceInf"); + this.mRemote.transact(48, _data, _reply, 0); + _reply.readException(); + int _result = _reply.readInt(); + return _result; + } finally { + _reply.recycle(); + _data.recycle(); + } + } + } + + public static BTServiceInf asInterface(IBinder obj) { + if (obj == null) { + return null; + } + IInterface iin = obj.queryLocalInterface("android.microntek.mtcser.BTServiceInf"); + if (iin == null || !(iin instanceof BTServiceInf)) { + return new Proxy(obj); + } + return (BTServiceInf) iin; + } + + public boolean onTransact(int code, Parcel data, Parcel reply, int flags) throws RemoteException { + int _arg0 = 0; + byte _result; + String _result2; + boolean _arg02 = false; + boolean _result3; + List _result4; + switch (code) { + case 1: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + init(); + reply.writeNoException(); + return true; + case 2: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + _result = getBTState(); + reply.writeNoException(); + reply.writeByte(_result); + return true; + case 3: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + _result = getAVState(); + reply.writeNoException(); + reply.writeByte(_result); + return true; + case 4: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + _result2 = getDialOutNum(); + reply.writeNoException(); + reply.writeString(_result2); + return true; + case 5: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + _result2 = getCallInNum(); + reply.writeNoException(); + reply.writeString(_result2); + return true; + case 6: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + _result2 = getPhoneNum(); + reply.writeNoException(); + reply.writeString(_result2); + return true; + case 7: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + long _result5 = getNowDevAddr(); + reply.writeNoException(); + reply.writeLong(_result5); + return true; + case 8: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + _result2 = getNowDevName(); + reply.writeNoException(); + reply.writeString(_result2); + return true; + case 9: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + avPlayPause(); + reply.writeNoException(); + return true; + case 10: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + avPlayStop(); + reply.writeNoException(); + return true; + case 11: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + avPlayPrev(); + reply.writeNoException(); + return true; + case 12: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + avPlayNext(); + reply.writeNoException(); + return true; + case 13: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + answerCall(); + reply.writeNoException(); + return true; + case 14: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + hangupCall(); + reply.writeNoException(); + return true; + case 15: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + rejectCall(); + reply.writeNoException(); + return true; + case 16: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + switchVoice(); + reply.writeNoException(); + return true; + case 17: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + syncPhonebook(); + reply.writeNoException(); + return true; + case 18: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + _result2 = getModuleName(); + reply.writeNoException(); + reply.writeString(_result2); + return true; + case 19: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + _result2 = getModulePassword(); + reply.writeNoException(); + reply.writeString(_result2); + return true; + case 20: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + setModuleName(data.readString()); + reply.writeNoException(); + return true; + case 21: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + setModulePassword(data.readString()); + reply.writeNoException(); + return true; + case 22: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + if (data.readInt() != 0) { + _arg02 = true; + } + setAutoConnect(_arg02); + reply.writeNoException(); + return true; + case 23: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + _result3 = getAutoConnect(); + reply.writeNoException(); + if (_result3) { + _arg0 = 1; + } + reply.writeInt(_arg0); + return true; + case 24: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + if (data.readInt() != 0) { + _arg02 = true; + } + setAutoAnswer(_arg02); + reply.writeNoException(); + return true; + case 25: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + _result3 = getAutoAnswer(); + reply.writeNoException(); + if (_result3) { + _arg0 = 1; + } + reply.writeInt(_arg0); + return true; + case 26: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + connectBT(data.readString()); + reply.writeNoException(); + return true; + case 27: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + disconnectBT(data.readString()); + reply.writeNoException(); + return true; + case 28: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + connectOBD(data.readString()); + reply.writeNoException(); + return true; + case 29: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + disconnectOBD(data.readString()); + reply.writeNoException(); + return true; + case 30: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + deleteOBD(data.readString()); + reply.writeNoException(); + return true; + case 31: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + deleteBT(data.readString()); + reply.writeNoException(); + return true; + case 32: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + syncMatchList(); + reply.writeNoException(); + return true; + case 33: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + _result4 = getMatchList(); + reply.writeNoException(); + reply.writeStringList(_result4); + return true; + case 34: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + _result4 = getDeviceList(); + reply.writeNoException(); + reply.writeStringList(_result4); + return true; + case 35: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + _result4 = getHistoryList(); + reply.writeNoException(); + reply.writeStringList(_result4); + return true; + case 36: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + _result4 = getPhoneBookList(); + reply.writeNoException(); + reply.writeStringList(_result4); + return true; + case 37: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + setPhoneBookList(data.createStringArrayList()); + reply.writeNoException(); + return true; + case 38: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + deleteHistory(data.readInt()); + reply.writeNoException(); + return true; + case 39: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + deleteHistoryAll(); + reply.writeNoException(); + return true; + case 40: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + musicMute(); + reply.writeNoException(); + return true; + case 41: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + musicUnmute(); + reply.writeNoException(); + return true; + case 42: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + scanStart(); + reply.writeNoException(); + return true; + case 43: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + scanStop(); + reply.writeNoException(); + return true; + case 44: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + dialOut(data.readString()); + reply.writeNoException(); + return true; + case 45: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + dialOutSub((char) data.readInt()); + reply.writeNoException(); + return true; + case 46: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + reDial(); + reply.writeNoException(); + return true; + case 47: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + _result2 = getMusicInfo(); + reply.writeNoException(); + reply.writeString(_result2); + return true; + case 48: + data.enforceInterface("android.microntek.mtcser.BTServiceInf"); + int _result6 = getOBDstate(); + reply.writeNoException(); + reply.writeInt(_result6); + return true; + case 1598968902: + reply.writeString("android.microntek.mtcser.BTServiceInf"); + return true; + default: + return super.onTransact(code, data, reply, flags); + } + } + } + + void answerCall() throws RemoteException; + + void avPlayNext() throws RemoteException; + + void avPlayPause() throws RemoteException; + + void avPlayPrev() throws RemoteException; + + void avPlayStop() throws RemoteException; + + void connectBT(String str) throws RemoteException; + + void connectOBD(String str) throws RemoteException; + + void deleteBT(String str) throws RemoteException; + + void deleteHistory(int i) throws RemoteException; + + void deleteHistoryAll() throws RemoteException; + + void deleteOBD(String str) throws RemoteException; + + void dialOut(String str) throws RemoteException; + + void dialOutSub(char c) throws RemoteException; + + void disconnectBT(String str) throws RemoteException; + + void disconnectOBD(String str) throws RemoteException; + + byte getAVState() throws RemoteException; + + boolean getAutoAnswer() throws RemoteException; + + boolean getAutoConnect() throws RemoteException; + + byte getBTState() throws RemoteException; + + String getCallInNum() throws RemoteException; + + List getDeviceList() throws RemoteException; + + String getDialOutNum() throws RemoteException; + + List getHistoryList() throws RemoteException; + + List getMatchList() throws RemoteException; + + String getModuleName() throws RemoteException; + + String getModulePassword() throws RemoteException; + + String getMusicInfo() throws RemoteException; + + long getNowDevAddr() throws RemoteException; + + String getNowDevName() throws RemoteException; + + int getOBDstate() throws RemoteException; + + List getPhoneBookList() throws RemoteException; + + String getPhoneNum() throws RemoteException; + + void hangupCall() throws RemoteException; + + void init() throws RemoteException; + + void musicMute() throws RemoteException; + + void musicUnmute() throws RemoteException; + + void reDial() throws RemoteException; + + void rejectCall() throws RemoteException; + + void scanStart() throws RemoteException; + + void scanStop() throws RemoteException; + + void setAutoAnswer(boolean z) throws RemoteException; + + void setAutoConnect(boolean z) throws RemoteException; + + void setModuleName(String str) throws RemoteException; + + void setModulePassword(String str) throws RemoteException; + + void setPhoneBookList(List list) throws RemoteException; + + void switchVoice() throws RemoteException; + + void syncMatchList() throws RemoteException; + + void syncPhonebook() throws RemoteException; +} diff --git a/app/src/main/java/com/f1x/mtcdialer/BluetoothServiceActivity.java b/app/src/main/java/com/f1x/mtcdialer/BluetoothServiceActivity.java new file mode 100644 index 0000000..5254fad --- /dev/null +++ b/app/src/main/java/com/f1x/mtcdialer/BluetoothServiceActivity.java @@ -0,0 +1,75 @@ +package com.f1x.mtcdialer; + +import android.app.Activity; +import android.content.ComponentName; +import android.content.Intent; +import android.content.ServiceConnection; +import android.microntek.mtcser.BTServiceInf; +import android.os.Bundle; +import android.os.IBinder; +import android.os.RemoteException; +import android.widget.Toast; + +/** + * Created by COMPUTER on 2017-02-17. + */ + +public abstract class BluetoothServiceActivity extends Activity { + @Override + protected void onCreate(Bundle savedInstance) { + super.onCreate(savedInstance); + + Intent startBluetoothServiceIntent = new Intent(); + startBluetoothServiceIntent.setComponent(new ComponentName("android.microntek.mtcser", "android.microntek.mtcser.BTSerialService")); + + if(!bindService(startBluetoothServiceIntent, mServiceConnection, BIND_AUTO_CREATE)) { + Toast.makeText(this, this.getText(R.string.BluetoothNotAvailable), Toast.LENGTH_LONG).show(); + finish(); + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + unbindService(mServiceConnection); + } + + protected abstract void onServiceConnected(); + protected abstract void onServiceDisconnected(); + + private final ServiceConnection mServiceConnection = new ServiceConnection() { + @Override + public void onServiceConnected(ComponentName componentName, IBinder iBinder) { + if(iBinder == null) { + Toast.makeText(BluetoothServiceActivity.this, BluetoothServiceActivity.this.getText(R.string.BluetoothNotAvailable), Toast.LENGTH_LONG).show(); + BluetoothServiceActivity.this.finish(); + return; + } + + mBluetoothServiceInterface = BTServiceInf.Stub.asInterface(iBinder); + + if(mBluetoothServiceInterface == null) { + Toast.makeText(BluetoothServiceActivity.this, BluetoothServiceActivity.this.getText(R.string.BluetoothNotAvailable), Toast.LENGTH_LONG).show(); + BluetoothServiceActivity.this.finish(); + return; + } + + try { + mBluetoothServiceInterface.init(); + BluetoothServiceActivity.this.onServiceConnected(); + } catch (RemoteException e) { + e.printStackTrace(); + Toast.makeText(BluetoothServiceActivity.this, e.getLocalizedMessage(), Toast.LENGTH_LONG).show(); + BluetoothServiceActivity.this.finish(); + } + } + + @Override + public void onServiceDisconnected(ComponentName componentName) { + mBluetoothServiceInterface = null; + BluetoothServiceActivity.this.onServiceDisconnected(); + } + }; + + protected BTServiceInf mBluetoothServiceInterface; +} diff --git a/app/src/main/java/com/f1x/mtcdialer/DialActivity.java b/app/src/main/java/com/f1x/mtcdialer/DialActivity.java new file mode 100644 index 0000000..4208dc3 --- /dev/null +++ b/app/src/main/java/com/f1x/mtcdialer/DialActivity.java @@ -0,0 +1,50 @@ +package com.f1x.mtcdialer; + +import android.content.Intent; +import android.net.Uri; +import android.os.Bundle; +import android.os.RemoteException; +import android.widget.Toast; + +/** + * Created by COMPUTER on 2017-02-17. + */ + +public class DialActivity extends BluetoothServiceActivity { + @Override + protected void onCreate(Bundle savedInstance) { + super.onCreate(savedInstance); + setContentView(R.layout.layout_activity); + } + + @Override + public void onServiceConnected() { + final String number = extractPhoneNumber(getIntent()); + + if (number != null && !number.isEmpty()) { + try { + mBluetoothServiceInterface.dialOut(number); + } catch (RemoteException e) { + e.printStackTrace(); + Toast.makeText(this, e.getLocalizedMessage(), Toast.LENGTH_LONG).show(); + } + } + + DialActivity.this.finish(); + } + + String extractPhoneNumber(Intent intent) { + Uri uri = intent.getData(); + + if(uri != null && uri.getScheme().equals("tel")) { + return uri.toString().replace("tel:", "").replaceAll("\\s+", ""); + } else { + return null; + } + } + + @Override + public void onServiceDisconnected() { + + } +} diff --git a/app/src/main/java/com/f1x/mtcdialer/PhoneBookActivity.java b/app/src/main/java/com/f1x/mtcdialer/PhoneBookActivity.java new file mode 100644 index 0000000..ebdb41e --- /dev/null +++ b/app/src/main/java/com/f1x/mtcdialer/PhoneBookActivity.java @@ -0,0 +1,85 @@ +package com.f1x.mtcdialer; + +import android.os.Bundle; +import android.os.RemoteException; +import android.widget.Toast; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + +/** + * Created by COMPUTER on 2017-02-17. + */ + +public abstract class PhoneBookActivity extends BluetoothServiceActivity { + @Override + protected void onCreate(Bundle savedInstance) { + super.onCreate(savedInstance); + mPhoneBookRecords = new TreeMap<>(String.CASE_INSENSITIVE_ORDER); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + mPhoneBookReceiver.unregister(this); + } + + @Override + protected void onServiceConnected() { + try { + List phoneBookRecords = mBluetoothServiceInterface.getPhoneBookList(); + + if(!phoneBookRecords.isEmpty()) { + buildPhoneBook(phoneBookRecords); + onPhoneBookFetchFinished(); + } else { + mPhoneBookReceiver.register(this); + mBluetoothServiceInterface.syncPhonebook(); + } + } catch (RemoteException e) { + e.printStackTrace(); + Toast.makeText(PhoneBookActivity.this, e.getLocalizedMessage(), Toast.LENGTH_LONG).show(); + finish(); + } + } + + private void buildPhoneBook(List phoneBookRecords) { + for(String phoneBookRecord : phoneBookRecords) { + String[] parsedRecord = phoneBookRecord.split("\\^"); + String phoneNumber = parsedRecord[1].replaceAll("[^\\d\\+]", ""); + + mPhoneBookRecords.put(parsedRecord[0], phoneNumber); + } + } + + protected abstract void onPhoneBookFetchFinished(); + + private final PhoneBookReceiver mPhoneBookReceiver = new PhoneBookReceiver() { + @Override + public void onPhoneBookRecordFetched(String record) { + mRawPhoneBookRecords.add(record); + } + + @Override + public void onPhoneBookFetchFinished() { + this.unregister(PhoneBookActivity.this); + PhoneBookActivity.this.buildPhoneBook(mRawPhoneBookRecords); + PhoneBookActivity.this.onPhoneBookFetchFinished(); + + try { + PhoneBookActivity.this.mBluetoothServiceInterface.setPhoneBookList(mRawPhoneBookRecords); + } catch (RemoteException e) { + e.printStackTrace(); + Toast.makeText(PhoneBookActivity.this, e.getLocalizedMessage(), Toast.LENGTH_LONG).show(); + } + + mRawPhoneBookRecords.clear(); + } + + List mRawPhoneBookRecords = new ArrayList<>(); + }; + + protected Map mPhoneBookRecords; +} diff --git a/app/src/main/java/com/f1x/mtcdialer/PhoneBookReceiver.java b/app/src/main/java/com/f1x/mtcdialer/PhoneBookReceiver.java new file mode 100644 index 0000000..7135f91 --- /dev/null +++ b/app/src/main/java/com/f1x/mtcdialer/PhoneBookReceiver.java @@ -0,0 +1,57 @@ +package com.f1x.mtcdialer; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; + +import java.util.Map; +import java.util.TreeMap; + +/** + * Created by COMPUTER on 2017-02-18. + */ + +public abstract class PhoneBookReceiver extends BroadcastReceiver { + public PhoneBookReceiver() { + mRegistered = false; + } + + @Override + public void onReceive(Context context, Intent intent) { + if (intent.getAction().equals(BLUETOOTH_REPORT_ACTION)) { + if (intent.hasExtra(PHONEBOOK_RECORD_EXTRA)) { + onPhoneBookRecordFetched(intent.getStringExtra(PHONEBOOK_RECORD_EXTRA)); + } else if (intent.hasExtra(PHONEBOOK_SYNC_END_EXTRA)) { + onPhoneBookFetchFinished(); + } + } + } + + public void register(Context context) { + if(!mRegistered) { + mRegistered = true; + + IntentFilter intentFilter = new IntentFilter(); + intentFilter.addAction(BLUETOOTH_REPORT_ACTION); + + context.registerReceiver(this, intentFilter); + } + } + + public void unregister(Context context) { + if(mRegistered) { + mRegistered = false; + context.unregisterReceiver(this); + } + } + + public abstract void onPhoneBookRecordFetched(String record); + public abstract void onPhoneBookFetchFinished(); + + private boolean mRegistered; + + private final String BLUETOOTH_REPORT_ACTION = "com.microntek.bt.report"; + private final String PHONEBOOK_RECORD_EXTRA = "phonebook_record"; + private final String PHONEBOOK_SYNC_END_EXTRA = "phonebook_end"; +} diff --git a/app/src/main/java/com/f1x/mtcdialer/VoiceSelectionCallerActivity.java b/app/src/main/java/com/f1x/mtcdialer/VoiceSelectionCallerActivity.java new file mode 100644 index 0000000..acd21fc --- /dev/null +++ b/app/src/main/java/com/f1x/mtcdialer/VoiceSelectionCallerActivity.java @@ -0,0 +1,83 @@ +package com.f1x.mtcdialer; + +import android.content.Intent; +import android.net.Uri; +import android.os.Bundle; +import android.speech.RecognizerIntent; +import android.telephony.PhoneNumberUtils; +import android.widget.Toast; + +import java.util.List; +import java.util.Locale; + +/** + * Created by COMPUTER on 2017-02-17. + */ + +public class VoiceSelectionCallerActivity extends PhoneBookActivity { + @Override + protected void onCreate(Bundle savedInstance) { + super.onCreate(savedInstance); + setContentView(R.layout.activity_voice_selection_caller); + } + + @Override + protected void onServiceDisconnected() {} + + @Override + protected void onPhoneBookFetchFinished() { + Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); + intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault().toString()); + intent.putExtra(RecognizerIntent.EXTRA_PROMPT, this.getText(R.string.SpeechPrompt)); + + startActivityForResult(intent, 1); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + if (resultCode != RESULT_OK || data == null) { + Toast.makeText(this, this.getText(R.string.SpeechNotRecognized), Toast.LENGTH_LONG).show(); + VoiceSelectionCallerActivity.this.finish(); + return; + } + + List texts = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); + if (texts.isEmpty()) { + Toast.makeText(this, this.getText(R.string.SpeechNotRecognized), Toast.LENGTH_LONG).show(); + VoiceSelectionCallerActivity.this.finish(); + return; + } + + String input = texts.get(0); + if (input.isEmpty()) { + Toast.makeText(this, this.getText(R.string.SpeechNotRecognized), Toast.LENGTH_LONG).show(); + VoiceSelectionCallerActivity.this.finish(); + return; + } + + processSpeechInput(input); + VoiceSelectionCallerActivity.this.finish(); + } + + private void processSpeechInput(String input) { + String phoneNumber = null; + + if (mPhoneBookRecords.containsKey(input)) { + phoneNumber = mPhoneBookRecords.get(input); + } else if (input.replaceAll("\\s+", "").matches("\\+?\\d+?")) { + phoneNumber = input; + } + + if(phoneNumber != null) { + String text = String.format(this.getString(R.string.CallingTo), input); + Toast.makeText(this, text, Toast.LENGTH_LONG).show(); + + Intent dialIntent = new Intent(this, DialActivity.class); + dialIntent.setData(Uri.parse("tel:" + phoneNumber)); + startActivity(dialIntent); + } else { + String text = String.format(this.getString(R.string.PhoneBookEntryNotFound), input); + Toast.makeText(this, text, Toast.LENGTH_LONG).show(); + } + } +} diff --git a/app/src/main/res/layout/activity_voice_selection_caller.xml b/app/src/main/res/layout/activity_voice_selection_caller.xml new file mode 100644 index 0000000..d9f4659 --- /dev/null +++ b/app/src/main/res/layout/activity_voice_selection_caller.xml @@ -0,0 +1,21 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_activity.xml b/app/src/main/res/layout/layout_activity.xml new file mode 100644 index 0000000..25823d4 --- /dev/null +++ b/app/src/main/res/layout/layout_activity.xml @@ -0,0 +1,8 @@ + + + diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..db0c75aaa90e39c980f04d36a186a9c1989079ab GIT binary patch literal 4184 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..68f0526732443f87237f122d5c245914783cfaa2 GIT binary patch literal 13363 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 + + Powiedz, gdzie chcesz zadzwonić + Bluetooth jest niedostępny + Nie można rozpoznać mowy + Wpis o nazwie\'%1$s\' nie został znaleziony w książce telefonicznej + Dzwonię do \'%1$s\' + Łączę z serwisem bluetooth... + \ No newline at end of file diff --git a/app/src/main/res/values-w820dp/dimens.xml b/app/src/main/res/values-w820dp/dimens.xml new file mode 100644 index 0000000..63fc816 --- /dev/null +++ b/app/src/main/res/values-w820dp/dimens.xml @@ -0,0 +1,6 @@ + + + 64dp + diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..3ab3e9c --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,6 @@ + + + #3F51B5 + #303F9F + #FF4081 + diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml new file mode 100644 index 0000000..47c8224 --- /dev/null +++ b/app/src/main/res/values/dimens.xml @@ -0,0 +1,5 @@ + + + 16dp + 16dp + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..491f962 --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,9 @@ + + MtcDialer + Say where do you want to call + Bluetooth is not available + Speech could not be recognized + Could not find phone number for \'%1$s\' + Calling to \'%1$s\' + Connecting to bluetooth service... + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..5885930 --- /dev/null +++ b/app/src/main/res/values/styles.xml @@ -0,0 +1,11 @@ + + + + + + diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..74b2ab0 --- /dev/null +++ b/build.gradle @@ -0,0 +1,23 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + repositories { + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:2.2.3' + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +allprojects { + repositories { + jcenter() + } +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..aac7c9b --- /dev/null +++ b/gradle.properties @@ -0,0 +1,17 @@ +# Project-wide Gradle settings. + +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. + +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html + +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx1536m + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..13372aef5e24af05341d49695ee84e5f9b594659 GIT binary patch literal 53636 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ⅅ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 H-+%o-(+5aQ literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..04e285f --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Mon Dec 28 10:00:20 PST 2015 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..9d82f78 --- /dev/null +++ b/gradlew @@ -0,0 +1,160 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..8a0b282 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..e7b4def --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +include ':app'