From 341a8407df88dfaa0fb15106f0b3112f7f3e25df Mon Sep 17 00:00:00 2001 From: Justin Dickow Date: Wed, 19 Mar 2014 13:04:11 -0400 Subject: [PATCH] Removed old Android tester app Signed-off-by: Justin Dickow --- SDL_Android/SmartDeviceLinkTester/.classpath | 8 - SDL_Android/SmartDeviceLinkTester/.project | 33 - .../.settings/org.eclipse.jdt.core.prefs | 11 - .../SmartDeviceLinkTester/AndroidManifest.xml | 51 - .../SmartDeviceLinkTester/project.properties | 16 - .../SmartDeviceLinkTester/res/drawable/fiesta.png | Bin 123256 -> 0 bytes .../res/layout/addcommand.xml | 63 - .../res/layout/addsubmenu.xml | 23 - .../SmartDeviceLinkTester/res/layout/alert.xml | 57 - .../res/layout/createinteractionchoices.xml | 103 -- .../SmartDeviceLinkTester/res/layout/main.xml | 47 - .../res/layout/properties.xml | 125 -- .../res/layout/resetglobalproperties.xml | 27 - .../SmartDeviceLinkTester/res/layout/row.xml | 28 - .../res/layout/setglobalproperties.xml | 53 - .../res/layout/setmediaclock.xml | 39 - .../SmartDeviceLinkTester/res/layout/show.xml | 105 -- .../SmartDeviceLinkTester/res/layout/speak.xml | 43 - SDL_Android/SmartDeviceLinkTester/res/raw/arco.mp3 | Bin 98878 -> 0 bytes .../SmartDeviceLinkTester/res/values/strings.xml | 9 - .../android/activity/IntentHelper.java | 35 - .../android/activity/SmartDeviceLinkTester.java | 1297 -------------------- .../android/adapters/MessageAdapter.java | 96 -- .../android/adapters/logAdapter.java | 125 -- .../android/constants/AcceptedRPC.java | 49 - .../smartdevicelink/android/constants/Const.java | 37 - .../android/constants/SmartDeviceLinkSubMenu.java | 27 - .../smartdevicelink/android/module/ModuleTest.java | 631 ---------- .../android/receivers/SmartDeviceLinkReceiver.java | 78 -- .../android/service/ProxyService.java | 720 ----------- 30 files changed, 3936 deletions(-) delete mode 100644 SDL_Android/SmartDeviceLinkTester/.classpath delete mode 100644 SDL_Android/SmartDeviceLinkTester/.project delete mode 100644 SDL_Android/SmartDeviceLinkTester/.settings/org.eclipse.jdt.core.prefs delete mode 100644 SDL_Android/SmartDeviceLinkTester/AndroidManifest.xml delete mode 100755 SDL_Android/SmartDeviceLinkTester/project.properties delete mode 100755 SDL_Android/SmartDeviceLinkTester/res/drawable/fiesta.png delete mode 100755 SDL_Android/SmartDeviceLinkTester/res/layout/addcommand.xml delete mode 100755 SDL_Android/SmartDeviceLinkTester/res/layout/addsubmenu.xml delete mode 100755 SDL_Android/SmartDeviceLinkTester/res/layout/alert.xml delete mode 100755 SDL_Android/SmartDeviceLinkTester/res/layout/createinteractionchoices.xml delete mode 100755 SDL_Android/SmartDeviceLinkTester/res/layout/main.xml delete mode 100644 SDL_Android/SmartDeviceLinkTester/res/layout/properties.xml delete mode 100644 SDL_Android/SmartDeviceLinkTester/res/layout/resetglobalproperties.xml delete mode 100755 SDL_Android/SmartDeviceLinkTester/res/layout/row.xml delete mode 100755 SDL_Android/SmartDeviceLinkTester/res/layout/setglobalproperties.xml delete mode 100755 SDL_Android/SmartDeviceLinkTester/res/layout/setmediaclock.xml delete mode 100755 SDL_Android/SmartDeviceLinkTester/res/layout/show.xml delete mode 100755 SDL_Android/SmartDeviceLinkTester/res/layout/speak.xml delete mode 100755 SDL_Android/SmartDeviceLinkTester/res/raw/arco.mp3 delete mode 100755 SDL_Android/SmartDeviceLinkTester/res/values/strings.xml delete mode 100644 SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/activity/IntentHelper.java delete mode 100644 SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/activity/SmartDeviceLinkTester.java delete mode 100644 SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/adapters/MessageAdapter.java delete mode 100644 SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/adapters/logAdapter.java delete mode 100644 SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/constants/AcceptedRPC.java delete mode 100644 SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/constants/Const.java delete mode 100644 SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/constants/SmartDeviceLinkSubMenu.java delete mode 100644 SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/module/ModuleTest.java delete mode 100644 SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/receivers/SmartDeviceLinkReceiver.java delete mode 100644 SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/service/ProxyService.java diff --git a/SDL_Android/SmartDeviceLinkTester/.classpath b/SDL_Android/SmartDeviceLinkTester/.classpath deleted file mode 100644 index a4763d1..0000000 --- a/SDL_Android/SmartDeviceLinkTester/.classpath +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/SDL_Android/SmartDeviceLinkTester/.project b/SDL_Android/SmartDeviceLinkTester/.project deleted file mode 100644 index 01edd4d..0000000 --- a/SDL_Android/SmartDeviceLinkTester/.project +++ /dev/null @@ -1,33 +0,0 @@ - - - SmartDeviceLinkTester - - - - - - com.android.ide.eclipse.adt.ResourceManagerBuilder - - - - - com.android.ide.eclipse.adt.PreCompilerBuilder - - - - - org.eclipse.jdt.core.javabuilder - - - - - com.android.ide.eclipse.adt.ApkBuilder - - - - - - com.android.ide.eclipse.adt.AndroidNature - org.eclipse.jdt.core.javanature - - diff --git a/SDL_Android/SmartDeviceLinkTester/.settings/org.eclipse.jdt.core.prefs b/SDL_Android/SmartDeviceLinkTester/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 8000cd6..0000000 --- a/SDL_Android/SmartDeviceLinkTester/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,11 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.6 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.6 diff --git a/SDL_Android/SmartDeviceLinkTester/AndroidManifest.xml b/SDL_Android/SmartDeviceLinkTester/AndroidManifest.xml deleted file mode 100644 index f2e94af..0000000 --- a/SDL_Android/SmartDeviceLinkTester/AndroidManifest.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/SDL_Android/SmartDeviceLinkTester/project.properties b/SDL_Android/SmartDeviceLinkTester/project.properties deleted file mode 100755 index 48e8c4a..0000000 --- a/SDL_Android/SmartDeviceLinkTester/project.properties +++ /dev/null @@ -1,16 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system edit -# "ant.properties", and override values to adapt the script to your -# project structure. -# -# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): -#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt - -# Project target. -target=android-8 -android.library.reference.1=../SmartDeviceLinkProxyAndroid -android.library=false diff --git a/SDL_Android/SmartDeviceLinkTester/res/drawable/fiesta.png b/SDL_Android/SmartDeviceLinkTester/res/drawable/fiesta.png deleted file mode 100755 index c348b5558aa1a04006951c748dad7c43d1e93719..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123256 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�-%PL#fcQK$21#a4nNIZOgRlO0n}G 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 - - - - - - - - - - - - - - - - - - - - diff --git a/SDL_Android/SmartDeviceLinkTester/res/layout/addsubmenu.xml b/SDL_Android/SmartDeviceLinkTester/res/layout/addsubmenu.xml deleted file mode 100755 index da5cdce..0000000 --- a/SDL_Android/SmartDeviceLinkTester/res/layout/addsubmenu.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - diff --git a/SDL_Android/SmartDeviceLinkTester/res/layout/alert.xml b/SDL_Android/SmartDeviceLinkTester/res/layout/alert.xml deleted file mode 100755 index 022ded0..0000000 --- a/SDL_Android/SmartDeviceLinkTester/res/layout/alert.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/SDL_Android/SmartDeviceLinkTester/res/layout/createinteractionchoices.xml b/SDL_Android/SmartDeviceLinkTester/res/layout/createinteractionchoices.xml deleted file mode 100755 index f584619..0000000 --- a/SDL_Android/SmartDeviceLinkTester/res/layout/createinteractionchoices.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/SDL_Android/SmartDeviceLinkTester/res/layout/main.xml b/SDL_Android/SmartDeviceLinkTester/res/layout/main.xml deleted file mode 100755 index 085d577..0000000 --- a/SDL_Android/SmartDeviceLinkTester/res/layout/main.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/SDL_Android/SmartDeviceLinkTester/res/layout/properties.xml b/SDL_Android/SmartDeviceLinkTester/res/layout/properties.xml deleted file mode 100644 index 0f54afb..0000000 --- a/SDL_Android/SmartDeviceLinkTester/res/layout/properties.xml +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/SDL_Android/SmartDeviceLinkTester/res/layout/resetglobalproperties.xml b/SDL_Android/SmartDeviceLinkTester/res/layout/resetglobalproperties.xml deleted file mode 100644 index 801c682..0000000 --- a/SDL_Android/SmartDeviceLinkTester/res/layout/resetglobalproperties.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - diff --git a/SDL_Android/SmartDeviceLinkTester/res/layout/row.xml b/SDL_Android/SmartDeviceLinkTester/res/layout/row.xml deleted file mode 100755 index fc16257..0000000 --- a/SDL_Android/SmartDeviceLinkTester/res/layout/row.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - diff --git a/SDL_Android/SmartDeviceLinkTester/res/layout/setglobalproperties.xml b/SDL_Android/SmartDeviceLinkTester/res/layout/setglobalproperties.xml deleted file mode 100755 index 7201242..0000000 --- a/SDL_Android/SmartDeviceLinkTester/res/layout/setglobalproperties.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/SDL_Android/SmartDeviceLinkTester/res/layout/setmediaclock.xml b/SDL_Android/SmartDeviceLinkTester/res/layout/setmediaclock.xml deleted file mode 100755 index e89e425..0000000 --- a/SDL_Android/SmartDeviceLinkTester/res/layout/setmediaclock.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/SDL_Android/SmartDeviceLinkTester/res/layout/show.xml b/SDL_Android/SmartDeviceLinkTester/res/layout/show.xml deleted file mode 100755 index aeb97c8..0000000 --- a/SDL_Android/SmartDeviceLinkTester/res/layout/show.xml +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/SDL_Android/SmartDeviceLinkTester/res/layout/speak.xml b/SDL_Android/SmartDeviceLinkTester/res/layout/speak.xml deleted file mode 100755 index 9bb2ebe..0000000 --- a/SDL_Android/SmartDeviceLinkTester/res/layout/speak.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/SDL_Android/SmartDeviceLinkTester/res/raw/arco.mp3 b/SDL_Android/SmartDeviceLinkTester/res/raw/arco.mp3 deleted file mode 100755 index 34c5049fecb0056fe0b65855305b517cc5be90e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98878 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 AxBvhE diff --git a/SDL_Android/SmartDeviceLinkTester/res/values/strings.xml b/SDL_Android/SmartDeviceLinkTester/res/values/strings.xml deleted file mode 100755 index 7d65dea..0000000 --- a/SDL_Android/SmartDeviceLinkTester/res/values/strings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - Type here: - SmartDeviceLinkTester - Connect - Speak - - diff --git a/SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/activity/IntentHelper.java b/SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/activity/IntentHelper.java deleted file mode 100644 index 427f07c..0000000 --- a/SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/activity/IntentHelper.java +++ /dev/null @@ -1,35 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// -package com.smartdevicelink.android.activity; - -import java.util.Hashtable; -import java.util.Map; - -public class IntentHelper { - private static IntentHelper _instance; - private Map _map; - - private IntentHelper() { - _map = new Hashtable(); - } - - private static IntentHelper getInstance() { - if (_instance == null) { - _instance = new IntentHelper(); - } - return _instance; - } - - public static void addObjectForKey(Object obj, String key) { - getInstance()._map.put(key, obj); - } - - public static Object getObjectForKey(String key) { - return getInstance()._map.get(key); - } - - public static void removeObjectForKey(String key) { - getInstance()._map.remove(key); - } -} diff --git a/SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/activity/SmartDeviceLinkTester.java b/SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/activity/SmartDeviceLinkTester.java deleted file mode 100644 index 612b62a..0000000 --- a/SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/activity/SmartDeviceLinkTester.java +++ /dev/null @@ -1,1297 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// -package com.smartdevicelink.android.activity; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; -import java.util.Vector; - -import android.app.Activity; -import android.app.AlertDialog; -import android.app.Dialog; -import android.bluetooth.BluetoothAdapter; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.content.SharedPreferences; -import android.os.Bundle; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.view.View.OnClickListener; -import android.view.ViewGroup; -import android.widget.AdapterView; -import android.widget.AdapterView.OnItemClickListener; -import android.widget.ArrayAdapter; -import android.widget.Button; -import android.widget.CheckBox; -import android.widget.CheckedTextView; -import android.widget.EditText; -import android.widget.ListView; -import android.widget.RadioGroup; -import android.widget.ScrollView; -import android.widget.Spinner; -import android.widget.Toast; - -import com.smartdevicelink.android.R; -import com.smartdevicelink.android.adapters.logAdapter; -import com.smartdevicelink.android.constants.Const; -import com.smartdevicelink.android.constants.SmartDeviceLinkSubMenu; -import com.smartdevicelink.android.module.ModuleTest; -import com.smartdevicelink.android.service.ProxyService; -import com.smartdevicelink.exception.SmartDeviceLinkException; -import com.smartdevicelink.proxy.RPCMessage; -import com.smartdevicelink.proxy.RPCRequest; -import com.smartdevicelink.proxy.RPCResponse; -import com.smartdevicelink.proxy.SmartDeviceLinkProxyALM; -import com.smartdevicelink.proxy.TTSChunkFactory; -import com.smartdevicelink.proxy.constants.Names; -import com.smartdevicelink.proxy.rpc.AddCommand; -import com.smartdevicelink.proxy.rpc.AddSubMenu; -import com.smartdevicelink.proxy.rpc.Alert; -import com.smartdevicelink.proxy.rpc.Choice; -import com.smartdevicelink.proxy.rpc.CreateInteractionChoiceSet; -import com.smartdevicelink.proxy.rpc.DeleteCommand; -import com.smartdevicelink.proxy.rpc.DeleteInteractionChoiceSet; -import com.smartdevicelink.proxy.rpc.DeleteSubMenu; -import com.smartdevicelink.proxy.rpc.EncodedSyncPData; -import com.smartdevicelink.proxy.rpc.MenuParams; -import com.smartdevicelink.proxy.rpc.PerformInteraction; -import com.smartdevicelink.proxy.rpc.ResetGlobalProperties; -import com.smartdevicelink.proxy.rpc.SetGlobalProperties; -import com.smartdevicelink.proxy.rpc.SetMediaClockTimer; -import com.smartdevicelink.proxy.rpc.Show; -import com.smartdevicelink.proxy.rpc.Speak; -import com.smartdevicelink.proxy.rpc.StartTime; -import com.smartdevicelink.proxy.rpc.SubscribeButton; -import com.smartdevicelink.proxy.rpc.TTSChunk; -import com.smartdevicelink.proxy.rpc.UnsubscribeButton; -import com.smartdevicelink.proxy.rpc.enums.ButtonName; -import com.smartdevicelink.proxy.rpc.enums.GlobalProperty; -import com.smartdevicelink.proxy.rpc.enums.InteractionMode; -import com.smartdevicelink.proxy.rpc.enums.Language; -import com.smartdevicelink.proxy.rpc.enums.SpeechCapabilities; -import com.smartdevicelink.proxy.rpc.enums.UpdateMode; -import com.smartdevicelink.transport.TransportType; - -public class SmartDeviceLinkTester extends Activity implements OnClickListener { - private static final String logTag = "SmartDeviceLinkTester"; - - private static final String ButtonSubscriptions = "ButtonSubscriptions"; - - private static SmartDeviceLinkTester _activity; - private static ArrayList _logMessages = new ArrayList(); - private static logAdapter _msgAdapter; - private ModuleTest _testerMain; - - private ScrollView _scroller = null; - private ListView _listview = null; - - private ArrayAdapter _submenuAdapter = null; - private ArrayAdapter _commandAdapter = null; - private ArrayAdapter _choiceSetAdapter = null; - - private static final int CHOICESETID_UNSET = -1; - /** - * Latest choiceSetId, required to add it to the adapter when a successful - * CreateInteractionChoiceSetResponse comes. - */ - private int _latestChoiceSetId = CHOICESETID_UNSET; - - private int autoIncCorrId = 101; - private int autoIncChoiceSetId = 1; - private int autoIncChoiceSetIdCmdId = 1; - private int itemcmdID = 1; - private int submenucmdID = 1000; - - private ArrayAdapter _buttonAdapter = null; - private boolean[] isButtonSubscribed = null; - - /** - * In onCreate() specifies if it is the first time the activity is created - * during this app launch. - */ - private static boolean isFirstActivityRun = true; - - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - _activity = this; - - setContentView(R.layout.main); - _scroller = (ScrollView) findViewById(R.id.scrollConsole); - - ((Button) findViewById(R.id.btnSendMessage)).setOnClickListener(this); - ((Button) findViewById(R.id.btnPlayPause)).setOnClickListener(this); - - resetAdapters(); - - _listview = (ListView) findViewById(R.id.messageList); - _msgAdapter = new logAdapter(logTag, false, this, R.layout.row, _logMessages); - - _listview.setClickable(true); - _listview.setAdapter(_msgAdapter); - _listview.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL); - _listview.setOnItemClickListener(new OnItemClickListener() { - public void onItemClick(AdapterView parent, View view, int position, long id) { - Object listObj = parent.getItemAtPosition(position); - if (listObj instanceof RPCMessage) { - AlertDialog.Builder builder = new AlertDialog.Builder(SmartDeviceLinkTester.this); - String rawJSON = ""; - - Integer corrId = -1; - if (listObj instanceof RPCRequest) { - corrId = ((RPCRequest) listObj).getCorrelationID(); - } else if (listObj instanceof RPCResponse) { - corrId = ((RPCResponse) listObj).getCorrelationID(); - } - - try { - rawJSON = ((RPCMessage) listObj).serializeJSON().toString(2); - builder.setTitle("Raw JSON" + (corrId != -1 ? " (Corr ID " + corrId + ")" : "")); - } catch (Exception e) { - try {rawJSON = ((RPCMessage) listObj).getFunctionName() + - " (" + ((RPCMessage) listObj).getMessageType() + ")"; - } catch (Exception e1) {rawJSON = "Undefined";} - } - builder.setMessage(rawJSON); - builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - dialog.cancel(); - } - }); - AlertDialog ad = builder.create(); - ad.show(); - } else if (listObj instanceof String){ - AlertDialog.Builder builder = new AlertDialog.Builder(SmartDeviceLinkTester.this); - builder.setMessage(listObj.toString()); - builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - dialog.cancel(); - } - }); - AlertDialog ad = builder.create(); - ad.show(); - } - } - }); - - if (isFirstActivityRun) { - propertiesUI(); - } else { - showPropertiesInTitle(); - startSmartDeviceLinkProxy(); - } - - isFirstActivityRun = false; - } - - /** - * Shows a dialog where the user can select connection features (protocol - * version, media flag, app name, language, HMI language, and transport - * settings). Starts the proxy after selecting. - */ - private void propertiesUI() { - Context context = this; - LayoutInflater inflater = (LayoutInflater) context - .getSystemService(LAYOUT_INFLATER_SERVICE); - View view = inflater.inflate(R.layout.properties, - (ViewGroup) findViewById(R.id.properties_Root)); - - ArrayAdapter langAdapter = new ArrayAdapter(this, - android.R.layout.simple_spinner_item, Language.values()); - langAdapter - .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - - final CheckBox mediaCheckBox = (CheckBox) view - .findViewById(R.id.properties_checkMedia); - final EditText appNameEditText = (EditText) view - .findViewById(R.id.properties_appName); - final RadioGroup transportGroup = (RadioGroup) view - .findViewById(R.id.properties_radioGroupTransport); - final EditText ipAddressEditText = (EditText) view - .findViewById(R.id.properties_ipAddr); - final EditText tcpPortEditText = (EditText) view - .findViewById(R.id.properties_tcpPort); - final CheckBox autoReconnectCheckBox = (CheckBox) view - .findViewById(R.id.properties_checkAutoReconnect); - - ipAddressEditText.setEnabled(false); - tcpPortEditText.setEnabled(false); - autoReconnectCheckBox.setEnabled(false); - - transportGroup - .setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(RadioGroup group, int checkedId) { - boolean transportOptionsEnabled = checkedId == R.id.properties_radioWiFi; - ipAddressEditText.setEnabled(transportOptionsEnabled); - tcpPortEditText.setEnabled(transportOptionsEnabled); - autoReconnectCheckBox - .setEnabled(transportOptionsEnabled); - } - }); - - // display current configs - final SharedPreferences prefs = getSharedPreferences(Const.PREFS_NAME, - 0); - boolean isMedia = prefs.getBoolean(Const.PREFS_KEY_ISMEDIAAPP, - Const.PREFS_DEFAULT_ISMEDIAAPP); - String appName = prefs.getString(Const.PREFS_KEY_APPNAME, - Const.PREFS_DEFAULT_APPNAME); - int transportType = prefs.getInt( - Const.Transport.PREFS_KEY_TRANSPORT_TYPE, - Const.Transport.PREFS_DEFAULT_TRANSPORT_TYPE); - String ipAddress = prefs.getString( - Const.Transport.PREFS_KEY_TRANSPORT_IP, - Const.Transport.PREFS_DEFAULT_TRANSPORT_IP); - int tcpPort = prefs.getInt(Const.Transport.PREFS_KEY_TRANSPORT_PORT, - Const.Transport.PREFS_DEFAULT_TRANSPORT_PORT); - boolean autoReconnect = prefs.getBoolean( - Const.Transport.PREFS_KEY_TRANSPORT_RECONNECT, - Const.Transport.PREFS_DEFAULT_TRANSPORT_RECONNECT_DEFAULT); - - mediaCheckBox.setChecked(isMedia); - appNameEditText.setText(appName); - transportGroup - .check(transportType == Const.Transport.KEY_TCP ? R.id.properties_radioWiFi - : R.id.properties_radioBT); - ipAddressEditText.setText(ipAddress); - tcpPortEditText.setText(String.valueOf(tcpPort)); - autoReconnectCheckBox.setChecked(autoReconnect); - - new AlertDialog.Builder(context) - .setTitle("Please select properties") - .setCancelable(false) - .setPositiveButton("OK", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - - String appName = appNameEditText.getText().toString(); - boolean isMedia = mediaCheckBox.isChecked(); - int transportType = transportGroup - .getCheckedRadioButtonId() == R.id.properties_radioWiFi ? Const.Transport.KEY_TCP - : Const.Transport.KEY_BLUETOOTH; - String ipAddress = ipAddressEditText.getText() - .toString(); - int tcpPort = Integer.parseInt(tcpPortEditText - .getText().toString()); - boolean autoReconnect = autoReconnectCheckBox - .isChecked(); - - // save the configs - boolean success = prefs - .edit() - .putBoolean(Const.PREFS_KEY_ISMEDIAAPP, isMedia) - .putString(Const.PREFS_KEY_APPNAME, appName) - .putInt(Const.Transport.PREFS_KEY_TRANSPORT_TYPE, - transportType) - .putString( - Const.Transport.PREFS_KEY_TRANSPORT_IP, - ipAddress) - .putInt(Const.Transport.PREFS_KEY_TRANSPORT_PORT, - tcpPort) - .putBoolean( - Const.Transport.PREFS_KEY_TRANSPORT_RECONNECT, - autoReconnect).commit(); - if (!success) { - Log.w(logTag, - "Can't save properties"); - } - - showPropertiesInTitle(); - startSmartDeviceLinkProxy(); - } - }).setView(view).show(); - } - - /** Starts the SmartDeviceLink proxy at startup after selecting protocol features. */ - private void startSmartDeviceLinkProxy() { - if (ProxyService.getInstance() == null) { - Intent startIntent = new Intent(SmartDeviceLinkTester._activity, ProxyService.class); - startService(startIntent); - } else { - ProxyService.getInstance().setCurrentActivity(SmartDeviceLinkTester._activity); - } - } - - /** - * Initializes/resets the adapters keeping created submenus, interaction - * choice set ids, etc. - */ - private void resetAdapters() { - List subscribableButtonNames = Arrays.asList(ButtonName.values()). - subList(0, ButtonName.values().length - 1); - isButtonSubscribed = new boolean[subscribableButtonNames.size()]; - _buttonAdapter = new ArrayAdapter(this, - android.R.layout.select_dialog_multichoice, subscribableButtonNames) { - public View getView(int position, View convertView, ViewGroup parent) { - CheckedTextView ret = (CheckedTextView) super.getView(position, - convertView, parent); - ret.setChecked(isButtonSubscribed[position]); - return ret; - } - }; - - _submenuAdapter = new ArrayAdapter(this, - android.R.layout.select_dialog_item); - _submenuAdapter - .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - - // Add top level menu with parent ID zero - SmartDeviceLinkSubMenu sm = new SmartDeviceLinkSubMenu(); - sm.setName("Top Level Menu"); - sm.setSubMenuId(0); - addSubMenuToList(sm); - - _commandAdapter = new ArrayAdapter(this, - android.R.layout.select_dialog_item); - _commandAdapter - .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - - _choiceSetAdapter = new ArrayAdapter(this, - android.R.layout.select_dialog_item); - _choiceSetAdapter - .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - } - - /** Displays the current protocol properties in the activity's title. */ - private void showPropertiesInTitle() { - final SharedPreferences prefs = getSharedPreferences(Const.PREFS_NAME, - 0); - boolean isMedia = prefs.getBoolean(Const.PREFS_KEY_ISMEDIAAPP, - Const.PREFS_DEFAULT_ISMEDIAAPP); - String transportType = prefs.getInt( - Const.Transport.PREFS_KEY_TRANSPORT_TYPE, - Const.Transport.PREFS_DEFAULT_TRANSPORT_TYPE) == Const.Transport.KEY_TCP ? "WiFi" - : "BT"; - setTitle(getResources().getString(R.string.app_name) + " (" - + (isMedia ? "" : "non-") + "media, " - + transportType + ")"); - } - - protected void onDestroy() { - super.onDestroy(); - endSmartDeviceLinkProxyInstance(); - _activity = null; - ProxyService service = ProxyService.getInstance(); - if (service != null) { - service.setCurrentActivity(null); - } - } - - public Dialog onCreateDialog(int id) { - Dialog dialog = null; - AlertDialog.Builder builder = new AlertDialog.Builder(this); - switch (id) { - case 1: - builder.setTitle("Raw JSON"); - builder.setMessage("This is the raw JSON message here"); - builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - dialog.cancel(); - } - }); - AlertDialog dialog1 = builder.create(); - dialog = dialog1; - break; - case 2: - break; - default: - dialog = null; - } - return dialog; - } - private final int PROXY_START = 5; - private final int XML_TEST = 7; - private final int MNU_TOGGLE_CONSOLE = 9; - private final int MNU_CLEAR = 10; - private final int MNU_EXIT = 11; - private final int MNU_TOGGLE_MEDIA = 12; - private final int MNU_UNREGISTER = 14; - - - /* Creates the menu items */ - public boolean onCreateOptionsMenu(Menu menu) { - boolean result = super.onCreateOptionsMenu(menu); - if (result) { - menu.add(0, PROXY_START, 0, "Proxy Start"); - menu.add(0, MNU_TOGGLE_CONSOLE, 0, "Toggle Console"); - menu.add(0, MNU_CLEAR, 0, "Clear Messages"); - menu.add(0, MNU_EXIT, 0, "Exit"); - menu.add(0, MNU_UNREGISTER, 0, "Unregister"); - menu.add(0, XML_TEST, 0, "XML Test"); - return true; - } else { - return false; - } - } - - private boolean getIsMedia() { - return getSharedPreferences(Const.PREFS_NAME, 0).getBoolean( - Const.PREFS_KEY_ISMEDIAAPP, Const.PREFS_DEFAULT_ISMEDIAAPP); - } - - /* Handles item selections */ - public boolean onOptionsItemSelected(MenuItem item) { - - switch (item.getItemId()) { - case PROXY_START: - BluetoothAdapter mBtAdapter = BluetoothAdapter.getDefaultAdapter(); - if (!mBtAdapter.isEnabled()) mBtAdapter.enable(); - - if (ProxyService.getInstance() == null) { - Intent startIntent = new Intent(this, ProxyService.class); - startService(startIntent); - } else { - ProxyService.getInstance().setCurrentActivity(this); - } - - if (ProxyService.getInstance().getProxyInstance() != null) { - try { - ProxyService.getInstance().getProxyInstance().resetProxy(); - } catch (SmartDeviceLinkException e) {} - } - - if (!mBtAdapter.isDiscovering()) { - Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE); - discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300); - startActivity(discoverableIntent); - } - return true; - - case XML_TEST: - if (_testerMain != null) { - _testerMain.restart(); - Toast.makeText(getApplicationContext(), "start your engines", Toast.LENGTH_SHORT).show(); - }else { - ProxyService.getInstance().startModuleTest(); - _testerMain.restart(); - Toast.makeText(getApplicationContext(), "Start the app on SmartDeviceLink first", Toast.LENGTH_LONG).show(); - } - break; - case MNU_EXIT: - exitApp(); - break; - case MNU_TOGGLE_CONSOLE: - if (_scroller.getVisibility() == ScrollView.VISIBLE) { - _scroller.setVisibility(ScrollView.GONE); - _listview.setVisibility(ListView.VISIBLE); - } else { - _scroller.setVisibility(ScrollView.VISIBLE); - _listview.setVisibility(ListView.GONE); - } - return true; - case MNU_CLEAR: - _msgAdapter.clear(); - return true; - case MNU_TOGGLE_MEDIA: - SharedPreferences settings = getSharedPreferences(Const.PREFS_NAME, 0); - boolean isMediaApp = settings.getBoolean(Const.PREFS_KEY_ISMEDIAAPP, Const.PREFS_DEFAULT_ISMEDIAAPP); - SharedPreferences.Editor editor = settings.edit(); - editor.putBoolean(Const.PREFS_KEY_ISMEDIAAPP, !isMediaApp); - editor.commit(); - return true; - case MNU_UNREGISTER: - endSmartDeviceLinkProxyInstance(); - startSmartDeviceLinkProxy(); - return true; - } - - return false; - } - - /** Closes the activity and stops the proxy service. */ - private void exitApp() { - stopService(new Intent(this, ProxyService.class)); - finish(); - new Timer().schedule(new TimerTask() { - @Override - public void run() { - android.os.Process.killProcess(android.os.Process.myPid()); - } - }, 1000); - } - - public void onClick(View v) { - if (v == findViewById(R.id.btnSendMessage)) { - final ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.select_dialog_item); - adapter.add(Names.Alert); - adapter.add(Names.Speak); - adapter.add(Names.Show); - adapter.add(ButtonSubscriptions); - adapter.add(Names.AddCommand); - adapter.add(Names.DeleteCommand); - adapter.add(Names.AddSubMenu); - adapter.add(Names.DeleteSubMenu); - adapter.add(Names.SetGlobalProperties); - adapter.add(Names.ResetGlobalProperties); - adapter.add(Names.SetMediaClockTimer); - adapter.add(Names.CreateInteractionChoiceSet); - adapter.add(Names.DeleteInteractionChoiceSet); - adapter.add(Names.PerformInteraction); - adapter.add(Names.EncodedSyncPData); - - new AlertDialog.Builder(this) - .setTitle("Pick a Function") - .setAdapter(adapter, new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int which) { - if(adapter.getItem(which) == Names.Alert){ - AlertDialog.Builder builder; - AlertDialog dlg; - - final Context mContext = adapter.getContext(); - LayoutInflater inflater = (LayoutInflater) mContext - .getSystemService(LAYOUT_INFLATER_SERVICE); - View layout = inflater.inflate(R.layout.alert, null); - final EditText txtSpeak = (EditText) layout.findViewById(R.id.txtSpeak); - final EditText txtAlertField1 = (EditText) layout.findViewById(R.id.txtAlertField1); - final EditText txtAlertField2 = (EditText) layout.findViewById(R.id.txtAlertField2); - final EditText txtDuration = (EditText) layout.findViewById(R.id.txtDuration); - final CheckBox chkPlayTone = (CheckBox) layout.findViewById(R.id.chkPlayTone); - - builder = new AlertDialog.Builder(mContext); - builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - String toSpeak = txtSpeak.getText().toString(); - try { - Alert msg = new Alert(); - msg.setCorrelationID(autoIncCorrId++); - msg.setAlertText1(txtAlertField1.getText().toString()); - msg.setAlertText2(txtAlertField2.getText().toString()); - msg.setDuration(Integer.parseInt(txtDuration.getText().toString())); - msg.setPlayTone(chkPlayTone.isChecked()); - if (toSpeak.length() > 0) { - Vector ttsChunks = TTSChunkFactory.createSimpleTTSChunks(toSpeak); - msg.setTtsChunks(ttsChunks); - } - _msgAdapter.logMessage(msg, true); - ProxyService.getInstance().getProxyInstance().sendRPCRequest(msg); - } catch (SmartDeviceLinkException e) { - _msgAdapter.logMessage("Error sending message: " + e, Log.ERROR, e); - } - } - }); - builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - dialog.cancel(); - } - }); - builder.setView(layout); - dlg = builder.create(); - dlg.show(); - } else if (adapter.getItem(which) == Names.Speak) { - //something - AlertDialog.Builder builder; - AlertDialog dlg; - - Context mContext = adapter.getContext(); - LayoutInflater inflater = (LayoutInflater) mContext - .getSystemService(LAYOUT_INFLATER_SERVICE); - View layout = inflater.inflate(R.layout.speak, null); - final EditText txtSpeakText1 = (EditText) layout.findViewById(R.id.txtSpeakText1); - final EditText txtSpeakText2 = (EditText) layout.findViewById(R.id.txtSpeakText2); - final EditText txtSpeakText3 = (EditText) layout.findViewById(R.id.txtSpeakText3); - final EditText txtSpeakText4 = (EditText) layout.findViewById(R.id.txtSpeakText4); - - final Spinner spnSpeakType1 = (Spinner) layout.findViewById(R.id.spnSpeakType1); - final Spinner spnSpeakType2 = (Spinner) layout.findViewById(R.id.spnSpeakType2); - final Spinner spnSpeakType3 = (Spinner) layout.findViewById(R.id.spnSpeakType3); - final Spinner spnSpeakType4 = (Spinner) layout.findViewById(R.id.spnSpeakType4); - - ArrayAdapter speechSpinnerAdapter = new ArrayAdapter(adapter.getContext(), android.R.layout.simple_spinner_item, SpeechCapabilities.values()); - spnSpeakType1.setAdapter(speechSpinnerAdapter); - spnSpeakType2.setAdapter(speechSpinnerAdapter); - spnSpeakType2.setSelection(3); - spnSpeakType3.setAdapter(speechSpinnerAdapter); - spnSpeakType4.setAdapter(speechSpinnerAdapter); - spnSpeakType4.setSelection(1); - spnSpeakType4.setEnabled(false); - - builder = new AlertDialog.Builder(mContext); - builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - Speak msg = new Speak(); - msg.setCorrelationID(autoIncCorrId++); - String speak1 = txtSpeakText1.getText().toString(); - String speak2 = txtSpeakText2.getText().toString(); - String speak3 = txtSpeakText3.getText().toString(); - String speak4 = txtSpeakText4.getText().toString(); - Vector chunks = new Vector(); - - if (speak1.length() > 0) { - chunks.add(TTSChunkFactory.createChunk((SpeechCapabilities)spnSpeakType1.getSelectedItem(), speak1)); - - } - if (speak2.length() > 0) { - chunks.add(TTSChunkFactory.createChunk((SpeechCapabilities)spnSpeakType2.getSelectedItem(), speak2)); - - } - if (speak3.length() > 0) { - chunks.add(TTSChunkFactory.createChunk((SpeechCapabilities)spnSpeakType3.getSelectedItem(), speak3)); - - } - if (speak4.length() > 0) { - chunks.add(TTSChunkFactory.createChunk(SpeechCapabilities.SAPI_PHONEMES, speak4)); - - } - msg.setTtsChunks(chunks); - try { - _msgAdapter.logMessage(msg, true); - ProxyService.getInstance().getProxyInstance().sendRPCRequest(msg); - } catch (SmartDeviceLinkException e) { - _msgAdapter.logMessage("Error sending message: " + e, Log.ERROR, e); - } - } - }); - builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - dialog.cancel(); - } - }); - builder.setView(layout); - dlg = builder.create(); - dlg.show(); - } else if (adapter.getItem(which) == Names.Show) { - //something - AlertDialog.Builder builder; - AlertDialog dlg; - - final Context mContext = adapter.getContext(); - LayoutInflater inflater = (LayoutInflater) mContext - .getSystemService(LAYOUT_INFLATER_SERVICE); - View layout = inflater.inflate(R.layout.show, null); - final EditText txtShowField1 = (EditText) layout.findViewById(R.id.txtShowField1); - final EditText txtShowField2 = (EditText) layout.findViewById(R.id.txtShowField2); - final EditText statusBar = (EditText) layout.findViewById(R.id.txtStatusBar); - final EditText mediaClock = (EditText) layout.findViewById(R.id.txtMediaClock); - final EditText mediaTrack = (EditText) layout.findViewById(R.id.txtMediaTrack); - - if (!getIsMedia()) { - int visibility = android.view.View.GONE; - mediaClock.setVisibility(visibility); - mediaTrack.setVisibility(visibility); - layout.findViewById(R.id.lblMediaTrack).setVisibility(visibility); - layout.findViewById(R.id.lblMediaClock).setVisibility(visibility); - } - - builder = new AlertDialog.Builder(mContext); - builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - try { - Show msg = new Show(); - msg.setCorrelationID(autoIncCorrId++); - msg.setMainField1(txtShowField1.getText().toString()); - msg.setMainField2(txtShowField2.getText().toString()); - msg.setStatusBar(statusBar.getText().toString()); - if (getIsMedia()) { - msg.setMediaClock(mediaClock.getText().toString()); - msg.setMediaTrack(mediaTrack.getText().toString()); - } - _msgAdapter.logMessage(msg, true); - ProxyService.getInstance().getProxyInstance().sendRPCRequest(msg); - } catch (SmartDeviceLinkException e) { - _msgAdapter.logMessage("Error sending message: " + e, Log.ERROR, e); - } - } - }); - builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - dialog.cancel(); - } - }); - builder.setView(layout); - dlg = builder.create(); - dlg.show(); - } else if (adapter.getItem(which) == ButtonSubscriptions) { - //something - AlertDialog.Builder builder = new AlertDialog.Builder(adapter.getContext()); - builder.setAdapter(_buttonAdapter, new DialogInterface.OnClickListener() { - - public void onClick(DialogInterface dialog, int which) { - boolean needToSubscribe = !isButtonSubscribed[which]; - try { - ButtonName buttonName = ButtonName.values()[which]; - int corrId = autoIncCorrId++; - if (needToSubscribe) { - SubscribeButton msg = new SubscribeButton(); - msg.setCorrelationID(corrId); - msg.setButtonName(buttonName); - _msgAdapter.logMessage(msg, true); - ProxyService.getInstance().getProxyInstance().sendRPCRequest(msg); - } else { - UnsubscribeButton msg = new UnsubscribeButton(); - msg.setCorrelationID(corrId); - msg.setButtonName(buttonName); - _msgAdapter.logMessage(msg, true); - ProxyService.getInstance().getProxyInstance().sendRPCRequest(msg); - } - } catch (SmartDeviceLinkException e) { - _msgAdapter.logMessage("Error sending message: " + e, Log.ERROR, e); - } - isButtonSubscribed[which] = !isButtonSubscribed[which]; - } - }); - AlertDialog dlg = builder.create(); - dlg.show(); - } else if (adapter.getItem(which) == Names.AddCommand) { - //something - AlertDialog.Builder builder; - AlertDialog addCommandDialog; - - Context mContext = adapter.getContext(); - LayoutInflater inflater = (LayoutInflater) mContext - .getSystemService(LAYOUT_INFLATER_SERVICE); - View layout = inflater.inflate(R.layout.addcommand, - (ViewGroup) findViewById(R.id.itemRoot)); - - final EditText er = (EditText) layout.findViewById(R.id.command); - final EditText editVrSynonym = (EditText) layout.findViewById(R.id.command2); - final Spinner s = (Spinner) layout.findViewById(R.id.availableSubmenus); - s.setAdapter(_submenuAdapter); - - builder = new AlertDialog.Builder(mContext); - builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - AddCommand msg = new AddCommand(); - msg.setCorrelationID(autoIncCorrId++); - String itemText = er.getText().toString(); - SmartDeviceLinkSubMenu sm = new SmartDeviceLinkSubMenu(); - sm = (SmartDeviceLinkSubMenu) s.getSelectedItem(); - MenuParams menuParams = new MenuParams(); - menuParams.setMenuName(itemText); - menuParams.setPosition(0); - menuParams.setParentID(sm.getSubMenuId()); - msg.setMenuParams(menuParams); - - String vrSynonym = editVrSynonym.getText().toString(); - if (vrSynonym.length() > 0) { - Vector vrCommands = new Vector(); - vrCommands.add(vrSynonym); - msg.setVrCommands(vrCommands); - } - - int cmdID = itemcmdID++; - msg.setCmdID(cmdID); - - try { - _msgAdapter.logMessage(msg, true); - ProxyService.getInstance().getProxyInstance().sendRPCRequest(msg); - } catch (SmartDeviceLinkException e) { - _msgAdapter.logMessage("Error sending message: " + e, Log.ERROR, e); - } - _commandAdapter.add(cmdID); - } - }); - builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - dialog.cancel(); - } - }); - builder.setView(layout); - addCommandDialog = builder.create(); - addCommandDialog.show(); - } else if (adapter.getItem(which) == Names.DeleteCommand) { - //something - AlertDialog.Builder builder = new AlertDialog.Builder(adapter.getContext()); - builder.setAdapter(_commandAdapter, new DialogInterface.OnClickListener() { - - public void onClick(DialogInterface dialog, int which) { - DeleteCommand msg = new DeleteCommand(); - msg.setCorrelationID(autoIncCorrId++); - int cmdID = _commandAdapter.getItem(which); - msg.setCmdID(cmdID); - try { - _msgAdapter.logMessage(msg, true); - ProxyService.getInstance().getProxyInstance().sendRPCRequest(msg); - } catch (SmartDeviceLinkException e) { - _msgAdapter.logMessage("Error sending message: " + e, Log.ERROR, e); - } - _commandAdapter.remove(cmdID); - } - }); - AlertDialog dlg = builder.create(); - dlg.show(); - } else if (adapter.getItem(which) == Names.AddSubMenu) { - //something - AlertDialog.Builder builder; - AlertDialog addSubMenuDialog; - - Context mContext = adapter.getContext(); - LayoutInflater inflater = (LayoutInflater) mContext - .getSystemService(LAYOUT_INFLATER_SERVICE); - View layout = inflater.inflate(R.layout.addsubmenu, - (ViewGroup) findViewById(R.id.submenu_Root)); - - final EditText subMenu = (EditText) layout.findViewById(R.id.submenu_item); - - builder = new AlertDialog.Builder(mContext); - builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - AddSubMenu msg = new AddSubMenu(); - msg.setCorrelationID(autoIncCorrId++); - SmartDeviceLinkSubMenu sm = new SmartDeviceLinkSubMenu(); - sm.setName(subMenu.getText().toString()); - sm.setSubMenuId(submenucmdID++); - addSubMenuToList(sm); - msg.setMenuID(sm.getSubMenuId()); - msg.setMenuName(sm.getName()); - msg.setPosition(null); - try { - _msgAdapter.logMessage(msg, true); - ProxyService.getInstance().getProxyInstance().sendRPCRequest(msg); - } catch (SmartDeviceLinkException e) { - _msgAdapter.logMessage("Error sending message: " + e, Log.ERROR, e); - } - } - }); - builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - dialog.cancel(); - } - }); - builder.setView(layout); - addSubMenuDialog = builder.create(); - addSubMenuDialog.show(); - } else if (adapter.getItem(which) == Names.DeleteSubMenu) { - //something - AlertDialog.Builder builder = new AlertDialog.Builder(adapter.getContext()); - builder.setAdapter(_submenuAdapter, new DialogInterface.OnClickListener() { - - public void onClick(DialogInterface dialog, int which) { - SmartDeviceLinkSubMenu menu = _submenuAdapter.getItem(which); - if (menu.getSubMenuId() != 0) { - DeleteSubMenu msg = new DeleteSubMenu(); - msg.setCorrelationID(autoIncCorrId++); - msg.setMenuID(menu.getSubMenuId()); - try { - _msgAdapter.logMessage(msg, true); - ProxyService.getInstance().getProxyInstance().sendRPCRequest(msg); - } catch (SmartDeviceLinkException e) { - _msgAdapter.logMessage("Error sending message: " + e, Log.ERROR, e); - } - - _submenuAdapter.remove(menu); - } else { - Toast.makeText(getApplicationContext(), - "Sorry, can't delete top-level menu", - Toast.LENGTH_LONG).show(); - } - } - }); - AlertDialog dlg = builder.create(); - dlg.show(); - } else if (adapter.getItem(which) == Names.SetGlobalProperties) { - sendSetGlobalProperties(); - } else if (adapter.getItem(which) == Names.ResetGlobalProperties) { - sendResetGlobalProperties(); - } else if (adapter.getItem(which) == Names.SetMediaClockTimer) { - //something - AlertDialog.Builder builder; - AlertDialog dlg; - - Context mContext = adapter.getContext(); - LayoutInflater inflater = (LayoutInflater) mContext - .getSystemService(LAYOUT_INFLATER_SERVICE); - View layout = inflater.inflate(R.layout.setmediaclock, null); - final EditText txtHours = (EditText) layout.findViewById(R.id.txtHours); - final EditText txtMinutes = (EditText) layout.findViewById(R.id.txtMinutes); - final EditText txtSeconds = (EditText) layout.findViewById(R.id.txtSeconds); - final Spinner spnUpdateMode = (Spinner) layout.findViewById(R.id.spnUpdateMode); - ArrayAdapter spinnerAdapter = new ArrayAdapter(adapter.getContext(), - android.R.layout.simple_spinner_item, UpdateMode.values()); - spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - spnUpdateMode.setAdapter(spinnerAdapter); - builder = new AlertDialog.Builder(mContext); - builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - SetMediaClockTimer msg = new SetMediaClockTimer(); - msg.setCorrelationID(autoIncCorrId++); - UpdateMode updateMode = (UpdateMode)spnUpdateMode.getSelectedItem(); - msg.setUpdateMode(updateMode); - try { - Integer hours = Integer.parseInt(txtHours.getText().toString()); - Integer minutes = Integer.parseInt(txtMinutes.getText().toString()); - Integer seconds = Integer.parseInt(txtSeconds.getText().toString()); - StartTime startTime = new StartTime(); - startTime.setHours(hours); - startTime.setMinutes(minutes); - startTime.setSeconds(seconds); - msg.setStartTime(startTime); - } catch (NumberFormatException e) { - // skip setting start time if parsing failed - } - - try { - _msgAdapter.logMessage(msg, true); - ProxyService.getInstance().getProxyInstance().sendRPCRequest(msg); - } catch (SmartDeviceLinkException e) { - _msgAdapter.logMessage("Error sending message: " + e, Log.ERROR, e); - } - } - }); - builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - dialog.cancel(); - } - }); - builder.setView(layout); - dlg = builder.create(); - dlg.show(); - } else if (adapter.getItem(which) == Names.CreateInteractionChoiceSet) { - //something - AlertDialog.Builder builder; - AlertDialog createCommandSet; - - Context mContext = adapter.getContext(); - LayoutInflater inflater = (LayoutInflater) mContext - .getSystemService(LAYOUT_INFLATER_SERVICE); - View layout = inflater.inflate(R.layout.createinteractionchoices, - (ViewGroup) findViewById(R.id.createcommands_Root)); - - final EditText command1 = (EditText) layout.findViewById(R.id.createcommands_command1); - final EditText command2 = (EditText) layout.findViewById(R.id.createcommands_command2); - final EditText command3 = (EditText) layout.findViewById(R.id.createcommands_command3); - final EditText vr1 = (EditText) layout.findViewById(R.id.createcommands_vr1); - final EditText vr2 = (EditText) layout.findViewById(R.id.createcommands_vr2); - final EditText vr3 = (EditText) layout.findViewById(R.id.createcommands_vr3); - final CheckBox choice1 = (CheckBox) layout.findViewById(R.id.createcommands_choice1); - final CheckBox choice2 = (CheckBox) layout.findViewById(R.id.createcommands_choice2); - final CheckBox choice3 = (CheckBox) layout.findViewById(R.id.createcommands_choice3); - - builder = new AlertDialog.Builder(mContext); - builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - Vector commands = new Vector(); - - if (choice1.isChecked()) { - Choice one = new Choice(); - one.setChoiceID(autoIncChoiceSetIdCmdId++); - one.setMenuName(command1.getText().toString()); - one.setVrCommands(new Vector(Arrays.asList(new String[] { command1.getText().toString(), - vr1.getText().toString() }))); - commands.add(one); - } - - if (choice2.isChecked()) { - Choice two = new Choice(); - two.setChoiceID(autoIncChoiceSetIdCmdId++); - two.setMenuName(command2.getText().toString()); - two.setVrCommands(new Vector(Arrays.asList(new String[] { command2.getText().toString(), - vr2.getText().toString() }))); - commands.add(two); - } - - if (choice3.isChecked()) { - Choice three = new Choice(); - three.setChoiceID(autoIncChoiceSetIdCmdId++); - three.setMenuName(command3.getText().toString()); - three.setVrCommands(new Vector(Arrays.asList(new String[] { command3.getText().toString(), - vr3.getText().toString() }))); - commands.add(three); - } - - if (!commands.isEmpty()) { - CreateInteractionChoiceSet msg = new CreateInteractionChoiceSet(); - msg.setCorrelationID(autoIncCorrId++); - int choiceSetID = autoIncChoiceSetId++; - msg.setInteractionChoiceSetID(choiceSetID); - msg.setChoiceSet(commands); - try { - _msgAdapter.logMessage(msg, true); - ProxyService.getInstance().getProxyInstance().sendRPCRequest(msg); - if (_latestChoiceSetId != CHOICESETID_UNSET) { - Log.w(logTag, "Latest choiceSetId should be unset, but equals to " + _latestChoiceSetId); - } - _latestChoiceSetId = choiceSetID; - } catch (SmartDeviceLinkException e) { - _msgAdapter.logMessage("Error sending message: " + e, Log.ERROR, e); - } - } else { - Toast.makeText(getApplicationContext(), "No commands to set", Toast.LENGTH_SHORT).show(); - } - } - }); - builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - dialog.cancel(); - } - }); - builder.setView(layout); - createCommandSet = builder.create(); - createCommandSet.show(); - } else if (adapter.getItem(which) == Names.DeleteInteractionChoiceSet) { - //something - AlertDialog.Builder builder = new AlertDialog.Builder(adapter.getContext()); - builder.setAdapter(_choiceSetAdapter, new DialogInterface.OnClickListener() { - - public void onClick(DialogInterface dialog, int which) { - DeleteInteractionChoiceSet msg = new DeleteInteractionChoiceSet(); - msg.setCorrelationID(autoIncCorrId++); - int commandSetID = _choiceSetAdapter.getItem(which); - msg.setInteractionChoiceSetID(commandSetID); - try { - _msgAdapter.logMessage(msg, true); - ProxyService.getInstance().getProxyInstance().sendRPCRequest(msg); - } catch (SmartDeviceLinkException e) { - _msgAdapter.logMessage("Error sending message: " + e, Log.ERROR, e); - } - - _choiceSetAdapter.remove(commandSetID); - } - }); - AlertDialog dlg = builder.create(); - dlg.show(); - } else if (adapter.getItem(which) == Names.PerformInteraction) { - //something - AlertDialog.Builder builder = new AlertDialog.Builder(adapter.getContext()); - builder.setAdapter(_choiceSetAdapter, new DialogInterface.OnClickListener() { - - public void onClick(DialogInterface dialog, int which) { - PerformInteraction msg = new PerformInteraction(); - msg.setCorrelationID(autoIncCorrId++); - Vector interactionChoiceSetIDs = new Vector(); - interactionChoiceSetIDs.add(_choiceSetAdapter.getItem(which)); - Vector initChunks = TTSChunkFactory - .createSimpleTTSChunks("Pick a command"); - Vector helpChunks = TTSChunkFactory - .createSimpleTTSChunks("help me, I'm melting"); - Vector timeoutChunks = TTSChunkFactory - .createSimpleTTSChunks("hurry it up"); - msg.setInitialPrompt(initChunks); - msg.setInitialText("Pick number:"); - msg.setInteractionChoiceSetIDList(interactionChoiceSetIDs); - msg.setInteractionMode(InteractionMode.BOTH); - msg.setTimeout(10000); - msg.setHelpPrompt(helpChunks); - msg.setTimeoutPrompt(timeoutChunks); - try { - _msgAdapter.logMessage(msg, true); - ProxyService.getInstance().getProxyInstance().sendRPCRequest(msg); - } catch (SmartDeviceLinkException e) { - _msgAdapter.logMessage("Error sending message: " + e, Log.ERROR, e); - } - } - }); - AlertDialog dlg = builder.create(); - dlg.show(); - } else if (adapter.getItem(which) == Names.EncodedSyncPData) { - //EncodedSyncPData - EncodedSyncPData msg = new EncodedSyncPData(); - Vector SmartDeviceLinkPData = new Vector(); - SmartDeviceLinkPData.add("AAM4AAkAAAAAAAAAAAA="); - msg.setData(SmartDeviceLinkPData); - msg.setCorrelationID(autoIncCorrId++); - - _msgAdapter.logMessage(msg, true); - - try { - ProxyService.getInstance().getProxyInstance().sendRPCRequest(msg); - } catch (SmartDeviceLinkException e) { - _msgAdapter.logMessage("Error sending message: " + e, Log.ERROR, e); - } - } - } - - private void sendSetGlobalProperties() { - AlertDialog.Builder builder; - - Context mContext = adapter.getContext(); - LayoutInflater inflater = (LayoutInflater) mContext - .getSystemService(LAYOUT_INFLATER_SERVICE); - View layout = inflater.inflate(R.layout.setglobalproperties, - (ViewGroup) findViewById(R.id.setglobalproperties_Root)); - - final EditText helpPrompt = (EditText) layout.findViewById(R.id.setglobalproperties_helpPrompt); - final EditText timeoutPrompt = (EditText) layout.findViewById(R.id.setglobalproperties_timeoutPrompt); - final CheckBox choiceHelpPrompt = (CheckBox) layout.findViewById(R.id.setglobalproperties_choiceHelpPrompt); - final CheckBox choiceTimeoutPrompt = (CheckBox) layout.findViewById(R.id.setglobalproperties_choiceTimeoutPrompt); - - builder = new AlertDialog.Builder(mContext); - builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - SetGlobalProperties msg = new SetGlobalProperties(); - int numberOfChoices = 0; - - if (choiceHelpPrompt.isChecked()) { - Vector help = new Vector(); - help.add(TTSChunkFactory.createChunk(SpeechCapabilities.TEXT, helpPrompt.getText().toString())); - msg.setHelpPrompt(help); - ++numberOfChoices; - } - - if (choiceTimeoutPrompt.isChecked()) { - Vector timeout = new Vector(); - timeout.add(TTSChunkFactory.createChunk(SpeechCapabilities.TEXT, timeoutPrompt.getText().toString())); - msg.setTimeoutPrompt(timeout); - ++numberOfChoices; - } - - if (numberOfChoices > 0) { - msg.setCorrelationID(autoIncCorrId++); - _msgAdapter.logMessage(msg, true); - try { - ProxyService.getInstance().getProxyInstance().sendRPCRequest(msg); - } catch (SmartDeviceLinkException e) { - _msgAdapter.logMessage("Error sending message: " + e, Log.ERROR, e); - } - } else { - Toast.makeText(getApplicationContext(), "No items selected", Toast.LENGTH_LONG).show(); - } - } - }); - builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - dialog.cancel(); - } - }); - builder.setView(layout); - builder.create().show(); - } - - private void sendResetGlobalProperties() { - AlertDialog.Builder builder; - - Context mContext = adapter.getContext(); - LayoutInflater inflater = (LayoutInflater) mContext - .getSystemService(LAYOUT_INFLATER_SERVICE); - View layout = inflater.inflate(R.layout.resetglobalproperties, - (ViewGroup) findViewById(R.id.resetglobalproperties_Root)); - - final CheckBox choiceHelpPrompt = (CheckBox) layout.findViewById(R.id.resetglobalproperties_choiceHelpPrompt); - final CheckBox choiceTimeoutPrompt = (CheckBox) layout.findViewById(R.id.resetglobalproperties_choiceTimeoutPrompt); - - builder = new AlertDialog.Builder(mContext); - builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - ResetGlobalProperties msg = new ResetGlobalProperties(); - Vector properties = new Vector(); - - if (choiceHelpPrompt.isChecked()) { - properties.add(GlobalProperty.HELPPROMPT); - } - - if (choiceTimeoutPrompt.isChecked()) { - properties.add(GlobalProperty.TIMEOUTPROMPT); - } - - if (!properties.isEmpty()) { - msg.setProperties(properties); - msg.setCorrelationID(autoIncCorrId++); - _msgAdapter.logMessage(msg, true); - try { - ProxyService.getInstance().getProxyInstance().sendRPCRequest(msg); - } catch (SmartDeviceLinkException e) { - _msgAdapter.logMessage("Error sending message: " + e, Log.ERROR, e); - } - } else { - Toast.makeText(getApplicationContext(), "No items selected", Toast.LENGTH_LONG).show(); - } - } - }); - builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - dialog.cancel(); - } - }); - builder.setView(layout); - builder.create().show(); - } - }) - .setNegativeButton("Close", null) - .show(); - } else if (v == findViewById(R.id.btnPlayPause)) { - ProxyService.getInstance().playPauseAnnoyingRepetitiveAudio(); - } - } - - public void addSubMenuToList(final SmartDeviceLinkSubMenu sm) { - runOnUiThread(new Runnable() { - public void run() { - _submenuAdapter.add(sm); - } - }); - } - - //upon onDestroy(), dispose current proxy and create a new one to enable auto-start - //call resetProxy() to do so - public void endSmartDeviceLinkProxyInstance() { - ProxyService serviceInstance = ProxyService.getInstance(); - if (serviceInstance != null){ - SmartDeviceLinkProxyALM proxyInstance = serviceInstance.getProxyInstance(); - //if proxy exists, reset it - if(proxyInstance != null){ - if (proxyInstance.getCurrentTransportType() == TransportType.BLUETOOTH) { - serviceInstance.reset(); - } else { - Log.e(logTag, "endSmartDeviceLinkProxyInstance. No reset required if transport is TCP"); - } - //if proxy == null create proxy - } else { - serviceInstance.startProxy(); - } - } - } - - public static SmartDeviceLinkTester getInstance() { - return _activity; - } - - public static logAdapter getMessageAdapter() { - return _msgAdapter; - } - - public void setTesterMain(ModuleTest _instance) { - this._testerMain = _instance; - } - - @Override - public void onBackPressed() { - moveTaskToBack(true); - } - - @Override - public void onPause() { - super.onPause(); - } - - /** - * Called when a CreateChoiceSetResponse comes. If successful, add it to the - * adapter. In any case, remove the key from the map. - */ - public void onCreateChoiceSetResponse(boolean success) { - if (_latestChoiceSetId != CHOICESETID_UNSET) { - if (success) { - _choiceSetAdapter.add(_latestChoiceSetId); - } - _latestChoiceSetId = CHOICESETID_UNSET; - } else { - Log.w(logTag, "Latest choiceSetId is unset"); - } - } - - /** Called when a connection to a SmartDeviceLink device has been closed. */ - public void onProxyClosed() { - resetAdapters(); - _msgAdapter.logMessage("Disconnected", true); - } - - /** - * Called when the app is acivated from HMI for the first time. ProxyService - * automatically subscribes to buttons, so we reflect that in the - * subscription list. - */ - public void buttonsSubscribed(Vector buttons) { - List buttonNames = Arrays.asList(ButtonName.values()); - for (ButtonName buttonName : buttons) { - isButtonSubscribed[buttonNames.indexOf(buttonName)] = true; - } - } -} - diff --git a/SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/adapters/MessageAdapter.java b/SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/adapters/MessageAdapter.java deleted file mode 100644 index 56f41cc..0000000 --- a/SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/adapters/MessageAdapter.java +++ /dev/null @@ -1,96 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// -package com.smartdevicelink.android.adapters; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.ArrayList; - -import android.content.Context; -import android.graphics.Color; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ArrayAdapter; -import android.widget.TextView; - -import com.smartdevicelink.android.R; -import com.smartdevicelink.proxy.RPCMessage; -import com.smartdevicelink.proxy.constants.Names; -import com.smartdevicelink.proxy.rpc.enums.Result; - -public class MessageAdapter extends ArrayAdapter { - private LayoutInflater vi; - - public MessageAdapter(Context context, int textViewResourceId, ArrayList items) { - super(context, textViewResourceId, items); - this.vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); - } - - /** Adds the specified message to the items list and notifies of the change. */ - public void addMessage(Object m) { - add(m); - } - - public View getView(int position, View convertView, ViewGroup parent) { - ViewGroup rowView = (ViewGroup)convertView; - Object rpcObj = getItem(position); - rowView = (ViewGroup)vi.inflate(R.layout.row, null); - if (rpcObj != null) { - TextView lblTop = (TextView) rowView.findViewById(R.id.toptext); - TextView lblBottom = (TextView) rowView.findViewById(R.id.bottomtext); - - if (rpcObj instanceof String) { - lblTop.setText((String)rpcObj); - } - else if (rpcObj instanceof RPCMessage) { - RPCMessage func = (RPCMessage)rpcObj; - if (func.getMessageType().equals(Names.request)) { - lblTop.setTextColor(Color.CYAN); - } else if (func.getMessageType().equals(Names.notification)) { - lblTop.setTextColor(Color.YELLOW); - } else if (func.getMessageType().equals(Names.response)) { - lblTop.setTextColor(Color.argb(255, 32, 161, 32)); - } - - lblTop.setText(func.getFunctionName() + " (" + func.getMessageType() + ")"); - - try { - Method getSuccessMethod = rpcObj.getClass().getDeclaredMethod("getSuccess"); - boolean isSuccess = (Boolean)getSuccessMethod.invoke(func); - if (isSuccess) { - lblTop.setTextColor(Color.GREEN); - } - else { - lblTop.setTextColor(Color.RED); - } - Method getInfoMethod = rpcObj.getClass().getDeclaredMethod("getInfo"); - Method getResultCodeMethod = rpcObj.getClass().getDeclaredMethod("getResultCode"); - - String info = (String)getInfoMethod.invoke(rpcObj); - Result result = (Result)getResultCodeMethod.invoke(rpcObj); - - lblBottom.setText(result + ": " + info); - - } catch (NoSuchMethodException e) { - rowView.removeView(lblBottom); - } catch (SecurityException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IllegalArgumentException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IllegalAccessException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (InvocationTargetException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - } - - return rowView; - } -} diff --git a/SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/adapters/logAdapter.java b/SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/adapters/logAdapter.java deleted file mode 100644 index bcae751..0000000 --- a/SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/adapters/logAdapter.java +++ /dev/null @@ -1,125 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// -package com.smartdevicelink.android.adapters; - -import java.util.ArrayList; - -import android.app.Activity; -import android.util.Log; - -public class logAdapter extends MessageAdapter { - private String logTag; - boolean fullUIDebug; - Activity activity; - - public logAdapter(String logTag, boolean fullUIDebug, Activity activity, int textViewResourceId, ArrayList items) { - super(activity, textViewResourceId, items); - this.activity = activity; - this.logTag = logTag; - this.fullUIDebug = fullUIDebug; - } - - private void addMessageToUI(final Object m) { - activity.runOnUiThread(new Runnable() { - public void run() { addMessage(m); } - }); - } - - public void logMessage (final Object m) { - Log.i(logTag, m.toString()); - if(fullUIDebug) addMessageToUI(m); - } - public void logMessage (final Object m, Boolean addToUI) { - Log.i(logTag, m.toString()); - addMessageToUI(m); - } - public void logMessage (final Object m, Integer type) { - if (m instanceof String) { - switch(type) { - case Log.DEBUG: - Log.d(logTag, m.toString()); - break; - case Log.ERROR: - Log.e(logTag, m.toString()); - break; - case Log.VERBOSE: - Log.v(logTag, m.toString()); - break; - case Log.WARN: - Log.w(logTag, m.toString()); - break; - default: - Log.i(logTag, m.toString()); - break; - } - } - if (fullUIDebug) addMessageToUI(m); - } - public void logMessage (final Object m, Integer type, Boolean addToUI) { - if (m instanceof String) { - switch(type) { - case Log.DEBUG: - Log.d(logTag, m.toString()); - break; - case Log.ERROR: - Log.e(logTag, m.toString()); - break; - case Log.VERBOSE: - Log.v(logTag, m.toString()); - break; - case Log.WARN: - Log.w(logTag, m.toString()); - break; - default: - Log.i(logTag, m.toString()); - break; - } - } - if (addToUI) addMessageToUI(m); - } - public void logMessage (final Object m, Integer type, Throwable tr) { - if (m instanceof String) { - switch(type) { - case Log.DEBUG: - Log.d(logTag, m.toString()); - break; - case Log.ERROR: - Log.e(logTag, m.toString(), tr); - break; - case Log.VERBOSE: - Log.v(logTag, m.toString()); - break; - case Log.WARN: - Log.w(logTag, m.toString()); - break; - default: - Log.i(logTag, m.toString()); - break; - } - } - if (fullUIDebug) addMessageToUI(m); - } - public void logMessage (final Object m, Integer type, Throwable tr, Boolean addToUI) { - if (m instanceof String) { - switch(type) { - case Log.DEBUG: - Log.d(logTag, m.toString()); - break; - case Log.ERROR: - Log.e(logTag, m.toString(), tr); - break; - case Log.VERBOSE: - Log.v(logTag, m.toString()); - break; - case Log.WARN: - Log.w(logTag, m.toString()); - break; - default: - Log.i(logTag, m.toString()); - break; - } - } - if (addToUI) addMessageToUI(m); - } -} diff --git a/SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/constants/AcceptedRPC.java b/SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/constants/AcceptedRPC.java deleted file mode 100644 index c73c97d..0000000 --- a/SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/constants/AcceptedRPC.java +++ /dev/null @@ -1,49 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// -package com.smartdevicelink.android.constants; - -import java.util.ArrayList; - -import com.smartdevicelink.proxy.constants.Names; - -public class AcceptedRPC { - ArrayList acceptedRPC = new ArrayList(); - - public AcceptedRPC() { - acceptedRPC.add(Names.RegisterAppInterface); - acceptedRPC.add(Names.UnregisterAppInterface); - acceptedRPC.add(Names.SetGlobalProperties); - acceptedRPC.add(Names.ResetGlobalProperties); - acceptedRPC.add(Names.AddCommand); - acceptedRPC.add(Names.DeleteCommand); - acceptedRPC.add(Names.AddSubMenu); - acceptedRPC.add(Names.DeleteSubMenu); - acceptedRPC.add(Names.CreateInteractionChoiceSet); - acceptedRPC.add(Names.PerformInteraction); - acceptedRPC.add(Names.DeleteInteractionChoiceSet); - acceptedRPC.add(Names.Alert); - acceptedRPC.add(Names.Show); - acceptedRPC.add(Names.Speak); - acceptedRPC.add(Names.SetMediaClockTimer); - acceptedRPC.add(Names.EncodedSyncPData); - acceptedRPC.add(Names.SubscribeButton); - acceptedRPC.add(Names.UnsubscribeButton); - - acceptedRPC.add("ClearMediaClockTimer"); - acceptedRPC.add("PauseMediaClockTimer"); - acceptedRPC.add("ResumeMediaClockTimer"); - } - - public String getFunctionName(int i) { - return acceptedRPC.get(i); - } - - public int getFunctionID(String functionName) { - return acceptedRPC.indexOf(functionName); - } - - public boolean isAcceptedRPC(String rpc) { - return acceptedRPC.contains(rpc); - } -} diff --git a/SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/constants/Const.java b/SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/constants/Const.java deleted file mode 100644 index 5e264c2..0000000 --- a/SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/constants/Const.java +++ /dev/null @@ -1,37 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// -package com.smartdevicelink.android.constants; - -/** Stores application-wide constants. */ -public class Const { - // Shared preference name for properties - public static final String PREFS_NAME = "SmartDeviceLinkTesterPrefs"; - - // Properties - public static final String PREFS_KEY_APPNAME = "appName"; - public static final String PREFS_KEY_ISMEDIAAPP = "isMediaApp"; - - // Default values - public static final String PREFS_DEFAULT_APPNAME = "SmartDeviceLinkTester"; - public static final boolean PREFS_DEFAULT_ISMEDIAAPP = true; - - // Transport properties - public static final class Transport { - // Properties - public static final String PREFS_KEY_TRANSPORT_TYPE = "TransportType"; - public static final String PREFS_KEY_TRANSPORT_PORT = "TCPPort"; - public static final String PREFS_KEY_TRANSPORT_IP = "IPAddress"; - public static final String PREFS_KEY_TRANSPORT_RECONNECT = "AutoReconnect"; - - public static final String TCP = "WiFi"; - public static final String BLUETOOTH = "Bluetooth"; - public static final int KEY_TCP = 1; - public static final int KEY_BLUETOOTH = 2; - - public static final int PREFS_DEFAULT_TRANSPORT_TYPE = KEY_BLUETOOTH; - public static final int PREFS_DEFAULT_TRANSPORT_PORT = 50007; - public static final String PREFS_DEFAULT_TRANSPORT_IP = "10.0.2.2"; - public static final boolean PREFS_DEFAULT_TRANSPORT_RECONNECT_DEFAULT = true; - } -} diff --git a/SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/constants/SmartDeviceLinkSubMenu.java b/SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/constants/SmartDeviceLinkSubMenu.java deleted file mode 100644 index 6c00309..0000000 --- a/SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/constants/SmartDeviceLinkSubMenu.java +++ /dev/null @@ -1,27 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// -package com.smartdevicelink.android.constants; - -public class SmartDeviceLinkSubMenu { - private String menuName; - private int id; - - public void setSubMenuId(int parentID){ - this.id = parentID; - } - public int getSubMenuId(){ - return this.id; - } - public void setName(String name){ - this.menuName = name; - } - public String getName(){ - return this.menuName; - } - - public String toString(){ - return "(" + getSubMenuId() + ") " + getName(); - } - -} diff --git a/SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/module/ModuleTest.java b/SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/module/ModuleTest.java deleted file mode 100644 index 3915321..0000000 --- a/SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/module/ModuleTest.java +++ /dev/null @@ -1,631 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// -package com.smartdevicelink.android.module; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileWriter; -import java.io.FilenameFilter; -import java.io.InputStreamReader; -import java.util.ArrayList; -import java.util.Hashtable; -import java.util.Iterator; -import java.util.Vector; - -import org.xmlpull.v1.XmlPullParser; -import com.smartdevicelink.exception.SmartDeviceLinkException; -import com.smartdevicelink.proxy.RPCRequest; -import com.smartdevicelink.proxy.constants.Names; -import com.smartdevicelink.proxy.rpc.AddCommand; -import com.smartdevicelink.proxy.rpc.AddSubMenu; -import com.smartdevicelink.proxy.rpc.Alert; -import com.smartdevicelink.proxy.rpc.CreateInteractionChoiceSet; -import com.smartdevicelink.proxy.rpc.DeleteCommand; -import com.smartdevicelink.proxy.rpc.DeleteInteractionChoiceSet; -import com.smartdevicelink.proxy.rpc.DeleteSubMenu; -import com.smartdevicelink.proxy.rpc.EncodedSyncPData; -import com.smartdevicelink.proxy.rpc.PerformInteraction; -import com.smartdevicelink.proxy.rpc.RegisterAppInterface; -import com.smartdevicelink.proxy.rpc.ResetGlobalProperties; -import com.smartdevicelink.proxy.rpc.SetGlobalProperties; -import com.smartdevicelink.proxy.rpc.SetMediaClockTimer; -import com.smartdevicelink.proxy.rpc.Show; -import com.smartdevicelink.proxy.rpc.Speak; -import com.smartdevicelink.proxy.rpc.StartTime; -import com.smartdevicelink.proxy.rpc.SubscribeButton; -import com.smartdevicelink.proxy.rpc.UnregisterAppInterface; -import com.smartdevicelink.proxy.rpc.UnsubscribeButton; -import com.smartdevicelink.proxy.rpc.enums.Result; -import com.smartdevicelink.proxy.rpc.enums.UpdateMode; -import com.smartdevicelink.android.activity.SmartDeviceLinkTester; -import com.smartdevicelink.android.adapters.logAdapter; -import com.smartdevicelink.android.constants.AcceptedRPC; -import com.smartdevicelink.android.service.ProxyService; - -import android.app.AlertDialog; -import android.app.AlertDialog.Builder; -import android.app.Dialog; -import android.content.DialogInterface; -import android.content.Intent; -import android.net.Uri; -import android.os.Environment; -import android.util.Log; -import android.util.Pair; -import android.util.Xml; - -public class ModuleTest { - private static ModuleTest _instance; - private SmartDeviceLinkTester _mainInstance; - private logAdapter _msgAdapter; - private static Runnable threadContext; - private static ModuleTest DialogThreadContext; - private Thread mainThread; - - private boolean pass; - private boolean integration; - private String userPrompt; - - private int numIterations; - - private ArrayList> expecting = new ArrayList>(); - private ArrayList>> testList = new ArrayList>> (); - - public static ArrayList> responses = new ArrayList>(); - - public ModuleTest() { - this._mainInstance = SmartDeviceLinkTester.getInstance(); - this._msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - - // Set this's instance - _instance = this; - _mainInstance.setTesterMain(_instance); - - mainThread = makeThread(); - } - - public void runTests() { - mainThread.start(); - } - - public void restart() { - mainThread.interrupt(); - mainThread = null; - mainThread = makeThread(); - mainThread.start(); - } - - private String[] mFileList; - private File mPath = new File(Environment.getExternalStorageDirectory() + ""); - private String mChosenFile; - private static final String FTYPE = ".xml"; - private static final int DIALOG_LOAD_FILE = 1000; - - private void loadFileList(){ - try{ - mPath.mkdirs(); - } catch(SecurityException e) { - Log.e("ModuleTest", "unable to write on the sd card " + e.toString()); - } - if (mPath.exists()) { - FilenameFilter filter = new FilenameFilter() { - public boolean accept(File dir, String filename) { - File sel = new File(dir, filename); - return filename.contains(FTYPE); - } - }; - mFileList = mPath.list(filter); - } else { - mFileList= new String[0]; - } - } - - Dialog dialog; - - protected Dialog onCreateDialog(final int id) { - DialogThreadContext = this; - _mainInstance.runOnUiThread(new Runnable() { - public void run() { - dialog = null; - AlertDialog.Builder builder = new Builder(_mainInstance); - - switch(id) { - case DIALOG_LOAD_FILE: - builder.setTitle("Choose your file"); - if (mFileList == null) { - Log.e("ModuleTest", "Showing file picker before loading the file list"); - dialog = builder.create(); - //return dialog; - synchronized (DialogThreadContext) { DialogThreadContext.notify();} - Thread.currentThread().interrupt(); - } - builder.setItems(mFileList, new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int which) { - mChosenFile = mFileList[which]; - //you can do stuff with the file here too - synchronized (DialogThreadContext) { DialogThreadContext.notify();} - Thread.currentThread().interrupt(); - } - }); - break; - } - dialog = builder.show(); - } - }); - - try { - synchronized (this) { this.wait();} - } catch (InterruptedException e) { - _msgAdapter.logMessage("InterruptedException", true); - } - return dialog; - } - - public Thread makeThread () { - return new Thread (new Runnable () { - public void run () { - mChosenFile = null; - loadFileList(); - onCreateDialog(DIALOG_LOAD_FILE); - if (mChosenFile != null) { - AcceptedRPC acceptedRPC = new AcceptedRPC(); - XmlPullParser parser = Xml.newPullParser(); - RPCRequest rpc; - try { - FileInputStream fin = new FileInputStream("/sdcard/" + mChosenFile); - InputStreamReader isr = new InputStreamReader(fin); - - String outFile = "/sdcard/" + mChosenFile.substring(0, mChosenFile.length() - 4) + ".csv"; - File out = new File(outFile); - FileWriter writer = new FileWriter(out); - writer.flush(); - - parser.setInput(isr); - int eventType = parser.getEventType(); - String name; - boolean done = false; - while (eventType != XmlPullParser.END_DOCUMENT && !done) { - name = parser.getName(); - - switch (eventType) { - case XmlPullParser.START_DOCUMENT: - Log.e("TESTING", "START_DOCUMENT, name: " + name); - break; - case XmlPullParser.END_DOCUMENT: - Log.e("TESTING", "END_DOCUMENT, name: " + name); - break; - case XmlPullParser.START_TAG: - name = parser.getName(); - if (name.equalsIgnoreCase("test")) { - _msgAdapter.logMessage("test " + parser.getAttributeValue(0), true); - testList.add(new Pair> (parser.getAttributeValue(0), new ArrayList ())); - expecting.clear(); - responses.clear(); - try { - if (parser.getAttributeName(1) != null) { - if (parser.getAttributeName(1).equalsIgnoreCase("iterations")) { - try {numIterations = Integer.parseInt(parser.getAttributeValue(1));} - catch (Exception e) {Log.e("parser", "Unable to parse number of iterations");} - } else numIterations = 1; - } else numIterations = 1; - } catch (Exception e) { - numIterations = 1; - } - } else if (name.equalsIgnoreCase("type")) { - if (parser.getAttributeValue(0).equalsIgnoreCase("integration")) integration = true; - else if (parser.getAttributeValue(0).equalsIgnoreCase("unit")) integration = false; - } else if (acceptedRPC.isAcceptedRPC(name)) { - //Create correct object - if (name.equalsIgnoreCase(Names.RegisterAppInterface)) { - rpc = new RegisterAppInterface(); - } else if (name.equalsIgnoreCase(Names.UnregisterAppInterface)) { - rpc = new UnregisterAppInterface(); - } else if (name.equalsIgnoreCase(Names.SetGlobalProperties)) { - rpc = new SetGlobalProperties(); - } else if (name.equalsIgnoreCase(Names.ResetGlobalProperties)) { - rpc = new ResetGlobalProperties(); - } else if (name.equalsIgnoreCase(Names.AddCommand)) { - rpc = new AddCommand(); - } else if (name.equalsIgnoreCase(Names.DeleteCommand)) { - rpc = new DeleteCommand(); - } else if (name.equalsIgnoreCase(Names.AddSubMenu)) { - rpc = new AddSubMenu(); - } else if (name.equalsIgnoreCase(Names.DeleteSubMenu)) { - rpc = new DeleteSubMenu(); - } else if (name.equalsIgnoreCase(Names.CreateInteractionChoiceSet)) { - rpc = new CreateInteractionChoiceSet(); - } else if (name.equalsIgnoreCase(Names.PerformInteraction)) { - rpc = new PerformInteraction(); - } else if (name.equalsIgnoreCase(Names.DeleteInteractionChoiceSet)) { - rpc = new DeleteInteractionChoiceSet(); - } else if (name.equalsIgnoreCase(Names.Alert)) { - rpc = new Alert(); - } else if (name.equalsIgnoreCase(Names.Show)) { - rpc = new Show(); - } else if (name.equalsIgnoreCase(Names.Speak)) { - rpc = new Speak(); - } else if (name.equalsIgnoreCase(Names.SetMediaClockTimer)) { - rpc = new SetMediaClockTimer(); - } else if (name.equalsIgnoreCase(Names.EncodedSyncPData)) { - rpc = new EncodedSyncPData(); - } else if (name.equalsIgnoreCase(Names.SubscribeButton)) { - rpc = new SubscribeButton(); - } else if (name.equalsIgnoreCase(Names.UnsubscribeButton)) { - rpc = new UnsubscribeButton(); - } else if (name.equalsIgnoreCase("ClearMediaClockTimer")) { - rpc = new Show(); - ((Show) rpc).setMainField1(null); - ((Show) rpc).setMainField2(null); - ((Show) rpc).setStatusBar(null); - ((Show) rpc).setMediaClock(" "); - ((Show) rpc).setMediaTrack(null); - ((Show) rpc).setAlignment(null); - } else if (name.equalsIgnoreCase("PauseMediaClockTimer")) { - rpc = new SetMediaClockTimer(); - StartTime startTime = new StartTime(); - startTime.setHours(0); - startTime.setMinutes(0); - startTime.setSeconds(0); - ((SetMediaClockTimer) rpc).setStartTime(startTime); - ((SetMediaClockTimer) rpc).setUpdateMode(UpdateMode.PAUSE); - } else if (name.equalsIgnoreCase("ResumeMediaClockTimer")) { - rpc = new SetMediaClockTimer(); - StartTime startTime = new StartTime(); - startTime.setHours(0); - startTime.setMinutes(0); - startTime.setSeconds(0); - ((SetMediaClockTimer) rpc).setStartTime(startTime); - ((SetMediaClockTimer) rpc).setUpdateMode(UpdateMode.RESUME); - } else { - rpc = new SetGlobalProperties(); - } - - if (parser.getAttributeName(0) != null && - parser.getAttributeName(0).equalsIgnoreCase("correlationID")) { - try {rpc.setCorrelationID(Integer.parseInt(parser.getAttributeValue(0)));} - catch (Exception e) {Log.e("parser", "Unable to parse Integer");} - } - - Hashtable hash = setParams(name, parser); - Log.e("TESTING", "" + hash); - for (Object key : hash.keySet()) { - rpc.setParameters((String) key, hash.get(key)); - } - - Iterator it = hash.entrySet().iterator(); - while (it.hasNext()) { - Hashtable.Entry pairs = (Hashtable.Entry)it.next(); - System.out.println(pairs.getKey() + " = " + pairs.getValue()); - } - - Pair> temp = testList.get(testList.size()-1); - temp.second.add(rpc); - testList.set(testList.size()-1, temp); - } else if (name.equalsIgnoreCase("result")) { - expecting.add(new Pair(Integer.parseInt(parser.getAttributeValue(0)), (Result.valueForString(parser.getAttributeValue(1))))); - } else if (name.equalsIgnoreCase("userPrompt") && integration) { - userPrompt = parser.getAttributeValue(0); - } - break; - case XmlPullParser.END_TAG: - name = parser.getName(); - if (name.equalsIgnoreCase("test")) { - try { - boolean localPass = true; - int i = numIterations; - int numPass = 0; - while (i > 0) { - xmlTest(); - if (pass) numPass++; - else localPass = false; - i--; - } - if (localPass) writer.write("" + testList.get(testList.size()-1).first + ", Pass, " + numPass + ", " + numIterations + "\n"); - if (!localPass) writer.write("" + testList.get(testList.size()-1).first + ", Fail, " + numPass + ", " + numIterations + "\n"); - Log.i("Test App Result", "" + testList.get(testList.size()-1).first + ", " + localPass + ", " + numPass + ", " + numIterations); - _msgAdapter.logMessage("" + testList.get(testList.size()-1).first + ", " + localPass + ", " + numPass + ", " + numIterations, true); - } catch (Exception e) { - _msgAdapter.logMessage("Test " + testList.get(testList.size()-1).first + " Failed! ", Log.ERROR, e); - } - } - break; - case XmlPullParser.TEXT: - //Log.e("TESTING", "TEXT, name: " + name); - break; - case XmlPullParser.CDSECT: - Log.e("TESTING", "CDSECT, name: " + name); - break; - case XmlPullParser.ENTITY_REF: - Log.e("TESTING", "ENTITY_REF, name: " + name); - break; - case XmlPullParser.IGNORABLE_WHITESPACE: - Log.e("TESTING", "IGNORABLE_WHITESPACE, name: " + name); - break; - case XmlPullParser.PROCESSING_INSTRUCTION: - Log.e("TESTING", "PROCESSING_INSTRUCTION, name: " + name); - break; - case XmlPullParser.COMMENT: - Log.e("TESTING", "COMMENT, name: " + name); - break; - case XmlPullParser.DOCDECL: - Log.e("TESTING", "DOCDECL, name: " + name); - break; - default: - break; - } - eventType = parser.next(); - } - writer.close(); - - Intent email = new Intent(Intent.ACTION_SEND); - email.setType("plain/text"); - email.putExtra(Intent.EXTRA_EMAIL, new String[]{"youremail@company.com"}); - email.putExtra(Intent.EXTRA_SUBJECT, "Unit Test Export"); - email.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(out)); - - _mainInstance.startActivity(Intent.createChooser(email, "Choose an Email client :")); - - } catch (Exception e) { - _msgAdapter.logMessage("Parser Failed!!", Log.ERROR, e); - } - } - } - }); - } - - private Hashtable setParams(String name, XmlPullParser parser) { - - Log.e("TESTING", "setParams start name: " + name); - - Hashtable hash = new Hashtable(); - - int eventType = 0; - Boolean done = false; - String tempName = null; - String vectorName = null; - - try { - while (eventType != XmlPullParser.END_DOCUMENT && !done) { - tempName = parser.getName(); - - switch (eventType) { - case XmlPullParser.START_DOCUMENT: - Log.e("TESTING", "START_DOCUMENT, tempName: " + tempName); - break; - case XmlPullParser.END_DOCUMENT: - Log.e("TESTING", "END_DOCUMENT, tempName: " + tempName); - break; - case XmlPullParser.START_TAG: - if (tempName.equalsIgnoreCase("Vector")) { - Log.e("TESTING", "In Vector"); - Vector vector = new Vector(); - - if (parser.getAttributeName(0) != null) vectorName = parser.getAttributeValue(0); - - Boolean nestedWhileDone = false; - - eventType = parser.next(); - while (eventType != XmlPullParser.START_TAG && !nestedWhileDone) { - if (eventType == XmlPullParser.END_TAG) { - if (parser.getName().equalsIgnoreCase("Vector")) { - Log.e("TESTING", "In Vector Loop, nestedWhileDone == true, END_TAG, name: " + name); - nestedWhileDone = true; - } - } else eventType = parser.next(); - } - - while (eventType != XmlPullParser.END_DOCUMENT && !nestedWhileDone) { - tempName = parser.getName(); - Log.e("TESTING", "In Vector Loop, tempName: " + tempName); - - switch (eventType) { - case XmlPullParser.START_DOCUMENT: - Log.e("TESTING", "In Vector Loop, START_DOCUMENT, name: " + name); - break; - case XmlPullParser.END_DOCUMENT: - Log.e("TESTING", "In Vector Loop, END_DOCUMENT, name: " + name); - break; - case XmlPullParser.START_TAG: - if (tempName.equalsIgnoreCase("Integer")) { - Log.e("TESTING", "In Nested Vector Integer"); - if (parser.getAttributeName(0) != null) { - try {vector.add(Double.parseDouble(parser.getAttributeValue(0)));} - catch (Exception e) {Log.e("parser", "Unable to parse Integer");} - } - } else if (tempName.equalsIgnoreCase("String")) { - Log.e("TESTING", "In Nested Vector String"); - if (parser.getAttributeName(0) != null) { - vector.add(parser.getAttributeValue(0)); - } - } else { - vector.add(setParams(tempName, parser)); - } - break; - case XmlPullParser.END_TAG: - Log.e("TESTING", "In Vector Loop, END_TAG, name: " + name); - if (tempName.equalsIgnoreCase("Vector")) { - Log.e("TESTING", "In Vector Loop, nestedWhileDone == true, END_TAG, name: " + name); - nestedWhileDone = true; - } - break; - case XmlPullParser.TEXT: - //Log.e("TESTING", "TEXT, name: " + name); - break; - case XmlPullParser.CDSECT: - Log.e("TESTING", "In Vector Loop, CDSECT, name: " + name); - break; - case XmlPullParser.ENTITY_REF: - Log.e("TESTING", "In Vector Loop, ENTITY_REF, name: " + name); - break; - case XmlPullParser.IGNORABLE_WHITESPACE: - Log.e("TESTING", "In Vector Loop, IGNORABLE_WHITESPACE, name: " + name); - break; - case XmlPullParser.PROCESSING_INSTRUCTION: - Log.e("TESTING", "In Vector Loop, PROCESSING_INSTRUCTION, name: " + name); - break; - case XmlPullParser.COMMENT: - Log.e("TESTING", "In Vector Loop, COMMENT, name: " + name); - break; - case XmlPullParser.DOCDECL: - Log.e("TESTING", "In Vector Loop, DOCDECL, name: " + name); - break; - default: - break; - } - eventType = parser.next(); - } - Log.e("TESTING", "out of Vector loop"); - hash.put(vectorName, vector); - } else if (tempName.equalsIgnoreCase("Integer")) { - Log.e("TESTING", "In Integer"); - if (parser.getAttributeName(0) != null) { - try {hash.put(parser.getAttributeName(0), Double.parseDouble(parser.getAttributeValue(0)));} - catch (Exception e) {Log.e("parser", "Unable to parse Integer");} - } - } else if (tempName.equalsIgnoreCase("Boolean")) { - Log.e("TESTING", "In Boolean"); - if (parser.getAttributeName(0) != null) { - if (parser.getAttributeValue(0).equalsIgnoreCase("true")) hash.put(parser.getAttributeName(0), true); - else if (parser.getAttributeValue(0).equalsIgnoreCase("false")) hash.put(parser.getAttributeName(0), false); - } - } else if (tempName.equalsIgnoreCase("String")) { - Log.e("TESTING", "In String"); - if (parser.getAttributeName(0) != null) { - hash.put(parser.getAttributeName(0), parser.getAttributeValue(0)); - } - } else { - Log.e("TESTING", "Returning in else statement"); - hash.put(tempName, setParams(tempName, parser)); - } - break; - case XmlPullParser.END_TAG: - if (tempName.equalsIgnoreCase(name)) { - done = true; - } - break; - case XmlPullParser.TEXT: - //Log.e("TESTING", "TEXT, tempName: " + tempName); - break; - case XmlPullParser.CDSECT: - Log.e("TESTING", "CDSECT, tempName: " + tempName); - break; - case XmlPullParser.ENTITY_REF: - Log.e("TESTING", "ENTITY_REF, tempName: " + tempName); - break; - case XmlPullParser.IGNORABLE_WHITESPACE: - Log.e("TESTING", "IGNORABLE_WHITESPACE, tempName: " + tempName); - break; - case XmlPullParser.PROCESSING_INSTRUCTION: - Log.e("TESTING", "PROCESSING_INSTRUCTION, tempName: " + tempName); - break; - case XmlPullParser.COMMENT: - Log.e("TESTING", "COMMENT, tempName: " + tempName); - break; - case XmlPullParser.DOCDECL: - Log.e("TESTING", "DOCDECL, tempName: " + tempName); - break; - default: - break; - } - eventType = parser.next(); - } - } catch (Exception e) { - _msgAdapter.logMessage("Parser Failed!!", Log.ERROR, e); - } - - Log.e("TESTING", "Returning at end of setParams function"); - return hash; - } - - private Boolean xmlTest() { - pass = false; - - Thread newThread = new Thread(new Runnable() { - public void run () { - threadContext = this; - - int numResponses = expecting.size(); - if (numResponses > 0) ProxyService.waiting(true); - - for (RPCRequest rpc : testList.get(testList.size()-1).second) { - _msgAdapter.logMessage(rpc, true); - try { - ProxyService.getProxyInstance().sendRPCRequest(rpc); - } catch (SmartDeviceLinkException e) { - _msgAdapter.logMessage("Error sending RPC", Log.ERROR, e, true); - } - } - - try { - for (int i = 0; i < numResponses; i++) synchronized (this) { this.wait(10000);} - } catch (InterruptedException e) { - _msgAdapter.logMessage("InterruptedException", true); - } - - ProxyService.waiting(false); - - try { - synchronized (this) { this.wait(5000);} - } catch (InterruptedException e) { - _msgAdapter.logMessage("InterruptedException", true); - } - - if (expecting.equals(responses)) { - pass = true; - if (integration) { - _mainInstance.runOnUiThread(new Runnable() { - public void run() { - AlertDialog.Builder alert = new AlertDialog.Builder(_mainInstance); - alert.setMessage(userPrompt); - alert.setPositiveButton("Yes", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - pass = true; - synchronized (threadContext) { threadContext.notify();} - } - }); - alert.setNegativeButton("No", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - pass = false; - synchronized (threadContext) { threadContext.notify();} - } - }); - alert.show(); - } - }); - - try { - synchronized (this) { this.wait();} - } catch (InterruptedException e) { - _msgAdapter.logMessage("InterruptedException", true); - } - } - } - - synchronized (_instance) { _instance.notify();} - - Thread.currentThread().interrupt(); - } - }); - newThread.start(); - - try { - synchronized (this) { this.wait();} - } catch (InterruptedException e) { - _msgAdapter.logMessage("InterruptedException", true); - } - - newThread.interrupt(); - newThread = null; - return pass; - } - - public static ModuleTest getModuleTestInstance() { - return _instance; - } - - public Runnable getThreadContext() { - return threadContext; - } -} diff --git a/SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/receivers/SmartDeviceLinkReceiver.java b/SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/receivers/SmartDeviceLinkReceiver.java deleted file mode 100644 index deaba4e..0000000 --- a/SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/receivers/SmartDeviceLinkReceiver.java +++ /dev/null @@ -1,78 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// -package com.smartdevicelink.android.receivers; - -import android.bluetooth.BluetoothAdapter; -import android.bluetooth.BluetoothDevice; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.util.Log; -import android.view.KeyEvent; - -import com.smartdevicelink.android.service.ProxyService; -import com.smartdevicelink.util.DebugTool; - -public class SmartDeviceLinkReceiver extends BroadcastReceiver { - static final String TAG = "SmartDeviceLinkTester"; - - public void onReceive(Context context, Intent intent) { - DebugTool.logInfo("SmartDeviceLinkReceiver.onReceive()"); - DebugTool.logInfo("Received Intent with action: " + intent.getAction()); - Log.i(TAG, "Received Intent with action: " + intent.getAction()); - final BluetoothDevice bluetoothDevice = (BluetoothDevice) intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); - BluetoothAdapter mBtAdapter; - ProxyService serviceInstance = ProxyService.getInstance(); - - //open proxy when BT is on. Dispose and shutdown service when BT is off - if (intent.getAction().equals(BluetoothAdapter.ACTION_STATE_CHANGED)) { - if ((intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, -1) == (BluetoothAdapter.STATE_TURNING_OFF))){ - if (serviceInstance != null){ - Log.i(TAG, "Bt off stop service"); - Intent stopIntent = new Intent(context, ProxyService.class); - stopIntent.putExtras(intent); - context.stopService(stopIntent); - } - } else if ((intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, -1) == (BluetoothAdapter.STATE_TURNING_ON))){ - Log.i(TAG, "Bt on"); - if (serviceInstance == null){ - Log.i(TAG, "Bt on start service"); - Intent startIntent = new Intent(context, ProxyService.class); - startIntent.putExtras(intent); - context.startService(startIntent); - } - //if the service was already running when BT turned back on - else { - serviceInstance.reset(); - } - } - //Listen for phone reboot and start service - } else if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { - mBtAdapter = BluetoothAdapter.getDefaultAdapter(); - if (mBtAdapter != null) - { - if (mBtAdapter.isEnabled()){ - Intent startIntent = new Intent(context, ProxyService.class); - startIntent.putExtras(intent); - context.startService(startIntent); - } - } - } - - if (intent.getAction().compareTo(Intent.ACTION_MEDIA_BUTTON) == 0) { - KeyEvent event = (KeyEvent) intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT); - if (event.getKeyCode() == KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE) { - abortBroadcast(); - } - - } - - if (intent.getAction().equals(android.media.AudioManager.ACTION_AUDIO_BECOMING_NOISY)) { - // signal your service to stop playback - if (serviceInstance != null){ - serviceInstance.pauseAnnoyingRepetitiveAudio(); - } - } - } -} diff --git a/SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/service/ProxyService.java b/SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/service/ProxyService.java deleted file mode 100644 index e51a7c6..0000000 --- a/SDL_Android/SmartDeviceLinkTester/src/com/smartdevicelink/android/service/ProxyService.java +++ /dev/null @@ -1,720 +0,0 @@ -// -// Copyright (c) 2013 Ford Motor Company -// -package com.smartdevicelink.android.service; - -import java.util.Arrays; -import java.util.Vector; - -import android.app.Service; -import android.bluetooth.BluetoothAdapter; -import android.content.Intent; -import android.content.IntentFilter; -import android.content.SharedPreferences; -import android.media.MediaPlayer; -import android.os.Binder; -import android.os.IBinder; -import android.util.Log; -import android.util.Pair; - -import com.smartdevicelink.android.R; -import com.smartdevicelink.android.activity.SmartDeviceLinkTester; -import com.smartdevicelink.android.adapters.logAdapter; -import com.smartdevicelink.android.constants.Const; -import com.smartdevicelink.android.module.ModuleTest; -import com.smartdevicelink.android.receivers.SmartDeviceLinkReceiver; -import com.smartdevicelink.exception.SmartDeviceLinkException; -import com.smartdevicelink.exception.SmartDeviceLinkExceptionCause; -import com.smartdevicelink.proxy.SmartDeviceLinkProxyALM; -import com.smartdevicelink.proxy.interfaces.IProxyListenerALM; -import com.smartdevicelink.proxy.rpc.AddCommandResponse; -import com.smartdevicelink.proxy.rpc.AddSubMenuResponse; -import com.smartdevicelink.proxy.rpc.AlertResponse; -import com.smartdevicelink.proxy.rpc.CreateInteractionChoiceSetResponse; -import com.smartdevicelink.proxy.rpc.DeleteCommandResponse; -import com.smartdevicelink.proxy.rpc.DeleteInteractionChoiceSetResponse; -import com.smartdevicelink.proxy.rpc.DeleteSubMenuResponse; -import com.smartdevicelink.proxy.rpc.EncodedSyncPDataResponse; -import com.smartdevicelink.proxy.rpc.GenericResponse; -import com.smartdevicelink.proxy.rpc.OnButtonEvent; -import com.smartdevicelink.proxy.rpc.OnButtonPress; -import com.smartdevicelink.proxy.rpc.OnCommand; -import com.smartdevicelink.proxy.rpc.OnDriverDistraction; -import com.smartdevicelink.proxy.rpc.OnEncodedSyncPData; -import com.smartdevicelink.proxy.rpc.OnHMIStatus; -import com.smartdevicelink.proxy.rpc.OnPermissionsChange; -import com.smartdevicelink.proxy.rpc.OnTBTClientState; -import com.smartdevicelink.proxy.rpc.PerformInteractionResponse; -import com.smartdevicelink.proxy.rpc.ResetGlobalPropertiesResponse; -import com.smartdevicelink.proxy.rpc.SetGlobalPropertiesResponse; -import com.smartdevicelink.proxy.rpc.SetMediaClockTimerResponse; -import com.smartdevicelink.proxy.rpc.ShowResponse; -import com.smartdevicelink.proxy.rpc.SpeakResponse; -import com.smartdevicelink.proxy.rpc.SubscribeButtonResponse; -import com.smartdevicelink.proxy.rpc.UnsubscribeButtonResponse; -import com.smartdevicelink.proxy.rpc.enums.ButtonName; -import com.smartdevicelink.proxy.rpc.enums.Result; -import com.smartdevicelink.transport.TCPTransportConfig; - -public class ProxyService extends Service implements IProxyListenerALM { - static final String TAG = "SmartDeviceLinkTester"; - private Integer autoIncCorrId = 1; - - private static SmartDeviceLinkTester _mainInstance; - private static ProxyService _instance; - private static SmartDeviceLinkProxyALM _SmartDeviceLinkProxy; - private static logAdapter _msgAdapter; - private ModuleTest _testerMain; - private BluetoothAdapter mBtAdapter; - private MediaPlayer embeddedAudioPlayer; - private Boolean playingAudio = false; - protected SmartDeviceLinkReceiver mediaButtonReceiver; - - private boolean firstHMIStatusChange = true; - - private static boolean waitingForResponse = false; - - public void onCreate() { - super.onCreate(); - - IntentFilter mediaIntentFilter = new IntentFilter(); - mediaIntentFilter.addAction(Intent.ACTION_MEDIA_BUTTON); - - mediaButtonReceiver = new SmartDeviceLinkReceiver(); - registerReceiver(mediaButtonReceiver, mediaIntentFilter); - - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage("ProxyService.onCreate()", Log.INFO); - else Log.i(TAG, "ProxyService.onCreate()"); - - _instance = this; - } - - public void showLockMain() { - if(SmartDeviceLinkTester.getInstance() == null) { - Intent i = new Intent(this, SmartDeviceLinkTester.class); - i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - startActivity(i); - } - } - - public int onStartCommand(Intent intent, int flags, int startId) { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage("ProxyService.onStartCommand()", Log.INFO); - else Log.i(TAG, "ProxyService.onStartCommand()"); - - startProxyIfNetworkConnected(); - - setCurrentActivity(SmartDeviceLinkTester.getInstance()); - - return START_STICKY; - } - - private void startProxyIfNetworkConnected() { - final SharedPreferences prefs = getSharedPreferences(Const.PREFS_NAME, - MODE_PRIVATE); - final int transportType = prefs.getInt( - Const.Transport.PREFS_KEY_TRANSPORT_TYPE, - Const.Transport.PREFS_DEFAULT_TRANSPORT_TYPE); - - if (transportType == Const.Transport.KEY_BLUETOOTH) { - Log.d(TAG, "ProxyService. onStartCommand(). Transport = Bluetooth."); - mBtAdapter = BluetoothAdapter.getDefaultAdapter(); - if (mBtAdapter != null) { - if (mBtAdapter.isEnabled()) { - startProxy(); - } - } - } else { - startProxy(); - } - } - - public void startProxy() { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage("ProxyService.startProxy()", true); - else Log.i(TAG, "ProxyService.startProxy()"); - - if (_SmartDeviceLinkProxy == null) { - try { - SharedPreferences settings = getSharedPreferences( - Const.PREFS_NAME, 0); - boolean isMediaApp = settings.getBoolean( - Const.PREFS_KEY_ISMEDIAAPP, - Const.PREFS_DEFAULT_ISMEDIAAPP); - String appName = settings.getString(Const.PREFS_KEY_APPNAME, - Const.PREFS_DEFAULT_APPNAME); - int transportType = settings.getInt( - Const.Transport.PREFS_KEY_TRANSPORT_TYPE, - Const.Transport.PREFS_DEFAULT_TRANSPORT_TYPE); - String ipAddress = settings.getString( - Const.Transport.PREFS_KEY_TRANSPORT_IP, - Const.Transport.PREFS_DEFAULT_TRANSPORT_IP); - int tcpPort = settings.getInt( - Const.Transport.PREFS_KEY_TRANSPORT_PORT, - Const.Transport.PREFS_DEFAULT_TRANSPORT_PORT); - boolean autoReconnect = settings - .getBoolean( - Const.Transport.PREFS_KEY_TRANSPORT_RECONNECT, - Const.Transport.PREFS_DEFAULT_TRANSPORT_RECONNECT_DEFAULT); - - if (transportType == Const.Transport.KEY_BLUETOOTH) { - _SmartDeviceLinkProxy = new SmartDeviceLinkProxyALM(this, appName, isMediaApp); - } else { - _SmartDeviceLinkProxy = new SmartDeviceLinkProxyALM(this, appName, isMediaApp, - new TCPTransportConfig(tcpPort, ipAddress, autoReconnect)); - } - } catch (SmartDeviceLinkException e) { - e.printStackTrace(); - //error creating proxy, returned proxy = null - if (_SmartDeviceLinkProxy == null){ - stopSelf(); - } - } - } - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage("ProxyService.startProxy() returning", Log.INFO); - else Log.i(TAG, "ProxyService.startProxy() returning"); - } - - public void onDestroy() { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage("ProxyService.onDestroy()", Log.INFO); - else Log.i(TAG, "ProxyService.onDestroy()"); - - disposeSmartDeviceLinkProxy(); - _instance = null; - if (embeddedAudioPlayer != null) embeddedAudioPlayer.release(); - unregisterReceiver(mediaButtonReceiver); - super.onDestroy(); - } - - public void disposeSmartDeviceLinkProxy() { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage("ProxyService.disposeSmartDeviceLinkProxy()", Log.INFO); - else Log.i(TAG, "ProxyService.disposeSmartDeviceLinkProxy()"); - - if (_SmartDeviceLinkProxy != null) { - try { - _SmartDeviceLinkProxy.dispose(); - } catch (SmartDeviceLinkException e) { - e.printStackTrace(); - } - _SmartDeviceLinkProxy = null; - } - } - - private void initialize() { - playingAudio = true; - playAnnoyingRepetitiveAudio(); - - try { - _SmartDeviceLinkProxy.show("SmartDeviceLink", "Tester", null, null, null, null, nextCorrID()); - } catch (SmartDeviceLinkException e) { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage("Error sending show", Log.ERROR, e, true); - else Log.e(TAG, "Error sending show", e); - } - - try { - _SmartDeviceLinkProxy.subscribeButton(ButtonName.OK, nextCorrID()); - _SmartDeviceLinkProxy.subscribeButton(ButtonName.SEEKLEFT, nextCorrID()); - _SmartDeviceLinkProxy.subscribeButton(ButtonName.SEEKRIGHT, nextCorrID()); - _SmartDeviceLinkProxy.subscribeButton(ButtonName.TUNEUP, nextCorrID()); - _SmartDeviceLinkProxy.subscribeButton(ButtonName.TUNEDOWN, nextCorrID()); - Vector buttons = new Vector(Arrays.asList(new ButtonName[] { - ButtonName.OK, ButtonName.SEEKLEFT, ButtonName.SEEKRIGHT, ButtonName.TUNEUP, - ButtonName.TUNEDOWN })); - SmartDeviceLinkTester.getInstance().buttonsSubscribed(buttons); - } catch (SmartDeviceLinkException e) { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage("Error subscribing to buttons", Log.ERROR, e, true); - else Log.e(TAG, "Error subscribing to buttons", e); - } - - - try { - _SmartDeviceLinkProxy.addCommand(100, "XML Test", new Vector(Arrays.asList(new String[] {"XML Test", "XML"})), nextCorrID()); - } catch (SmartDeviceLinkException e) { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage("Error adding AddCommands", Log.ERROR, e, true); - else Log.e(TAG, "Error adding AddCommands", e); - } - } - - public void playPauseAnnoyingRepetitiveAudio() { - if (embeddedAudioPlayer != null && embeddedAudioPlayer.isPlaying()) { - playingAudio = false; - pauseAnnoyingRepetitiveAudio(); - } else { - playingAudio = true; - playAnnoyingRepetitiveAudio(); - } - } - - private void playAnnoyingRepetitiveAudio() { - if (embeddedAudioPlayer == null) { - embeddedAudioPlayer = MediaPlayer.create(this, R.raw.arco); - embeddedAudioPlayer.setLooping(true); - } - embeddedAudioPlayer.start(); - - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage("Playing audio", true); - else Log.i(TAG, "Playing audio"); - } - - public void pauseAnnoyingRepetitiveAudio() { - if (embeddedAudioPlayer != null && embeddedAudioPlayer.isPlaying()) { - embeddedAudioPlayer.pause(); - - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage("Paused audio", true); - else Log.i(TAG, "Paused audio"); - } - } - - public static SmartDeviceLinkProxyALM getProxyInstance() { - return _SmartDeviceLinkProxy; - } - - public static ProxyService getInstance() { - return _instance; - } - - public SmartDeviceLinkTester getCurrentActivity() { - return _mainInstance; - } - - public void startModuleTest() { - _testerMain = new ModuleTest(); - } - - public static void waiting(boolean waiting) { - waitingForResponse = waiting; - } - - public void setCurrentActivity(SmartDeviceLinkTester currentActivity) { - if (this._mainInstance != null) { - this._mainInstance.finish(); - this._mainInstance = null; - } - - this._mainInstance = currentActivity; - // update the _msgAdapter - _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - } - - protected int nextCorrID() { - autoIncCorrId++; - return autoIncCorrId; - } - - @Override - public void onOnHMIStatus(OnHMIStatus notification) { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage(notification, true); - else Log.i(TAG, "" + notification); - - switch(notification.getSystemContext()) { - case SYSCTXT_MAIN: - break; - case SYSCTXT_VRSESSION: - break; - case SYSCTXT_MENU: - break; - default: - return; - } - - switch(notification.getAudioStreamingState()) { - case AUDIBLE: - if (playingAudio) playAnnoyingRepetitiveAudio(); - break; - case NOT_AUDIBLE: - pauseAnnoyingRepetitiveAudio(); - break; - default: - return; - } - - switch(notification.getHmiLevel()) { - case HMI_FULL: - if (notification.getFirstRun()) { - showLockMain(); - _testerMain = new ModuleTest(); - _testerMain = ModuleTest.getModuleTestInstance(); - initialize(); - } - else { - try { - if (!waitingForResponse && _testerMain.getThreadContext() != null) { - _SmartDeviceLinkProxy.show("SmartDeviceLink Proxy", "Tester Ready", null, null, null, null, nextCorrID()); - } - } catch (SmartDeviceLinkException e) { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage("Error sending show", Log.ERROR, e, true); - else Log.e(TAG, "Error sending show", e); - } - } - break; - case HMI_LIMITED: - break; - case HMI_BACKGROUND: - break; - case HMI_NONE: - break; - default: - return; - } - } - - @Override - public void onOnCommand(OnCommand notification) { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage(notification, true); - else Log.i(TAG, "" + notification); - - switch(notification.getCmdID()) - { - case 100: //XML Test - _testerMain.restart(); - break; - default: - break; - } - } - - @Override - public void onProxyClosed(String info, Exception e) { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage("onProxyClosed: " + info, Log.ERROR, e); - else Log.e(TAG, "onProxyClosed: " + info, e); - - boolean wasConnected = !firstHMIStatusChange; - firstHMIStatusChange = true; - - if (wasConnected) { - final SmartDeviceLinkTester mainActivity = SmartDeviceLinkTester.getInstance(); - if (mainActivity != null) { - mainActivity.runOnUiThread(new Runnable() { - @Override - public void run() { - mainActivity.onProxyClosed(); - } - }); - } else { - Log.w(TAG, "mainActivity not found"); - } - } - - if(((SmartDeviceLinkException) e).getSmartDeviceLinkExceptionCause() != SmartDeviceLinkExceptionCause.SMARTDEVICELINK_PROXY_CYCLED - && ((SmartDeviceLinkException) e).getSmartDeviceLinkExceptionCause() != SmartDeviceLinkExceptionCause.BLUETOOTH_DISABLED) { - reset(); - } - } - - public void reset(){ - try { - if (_SmartDeviceLinkProxy != null) _SmartDeviceLinkProxy.resetProxy(); - else startProxyIfNetworkConnected(); - } catch (SmartDeviceLinkException e1) { - e1.printStackTrace(); - //something goes wrong, & the proxy returns as null, stop the service. - //do not want a running service with a null proxy - if (_SmartDeviceLinkProxy == null){ - stopSelf(); - } - } - } - - /** - * Restarting SmartDeviceLinkProxyALM. For example after changing transport type - */ - public void restart() { - Log.i(TAG, "ProxyService.Restart SmartDeviceLinkProxyALM."); - disposeSmartDeviceLinkProxy(); - startProxyIfNetworkConnected(); - } - - @Override - public void onError(String info, Exception e) { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) { - _msgAdapter.logMessage("******onProxyError******", Log.ERROR); - _msgAdapter.logMessage("ERROR: " + info, Log.ERROR, e); - } else { - Log.e(TAG, "******onProxyError******"); - Log.e(TAG, "ERROR: " + info, e); - } - } - - /********************************* - ** SmartDeviceLink SmartDeviceLink Base Callback's ** - *********************************/ - @Override - public void onAddSubMenuResponse(AddSubMenuResponse response) { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage(response, true); - else Log.i(TAG, "" + response); - - if (waitingForResponse && _testerMain.getThreadContext() != null) { - ModuleTest.responses.add(new Pair(response.getCorrelationID(), response.getResultCode())); - synchronized (_testerMain.getThreadContext()) { _testerMain.getThreadContext().notify();}; - } - } - @Override - public void onCreateInteractionChoiceSetResponse(CreateInteractionChoiceSetResponse response) { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage(response, true); - else Log.i(TAG, "" + response); - - final SmartDeviceLinkTester mainActivity = SmartDeviceLinkTester.getInstance(); - final boolean success = response.getSuccess(); - mainActivity.runOnUiThread(new Runnable() { - @Override - public void run() { - mainActivity.onCreateChoiceSetResponse(success); - } - }); - - if (waitingForResponse && _testerMain.getThreadContext() != null) { - ModuleTest.responses.add(new Pair(response.getCorrelationID(), response.getResultCode())); - synchronized (_testerMain.getThreadContext()) { _testerMain.getThreadContext().notify();}; - } - } - @Override - public void onDeleteCommandResponse(DeleteCommandResponse response) { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage(response, true); - else Log.i(TAG, "" + response); - - if (waitingForResponse && _testerMain.getThreadContext() != null) { - ModuleTest.responses.add(new Pair(response.getCorrelationID(), response.getResultCode())); - synchronized (_testerMain.getThreadContext()) { _testerMain.getThreadContext().notify();}; - } - } - @Override - public void onDeleteInteractionChoiceSetResponse(DeleteInteractionChoiceSetResponse response) { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage(response, true); - else Log.i(TAG, "" + response); - - if (waitingForResponse && _testerMain.getThreadContext() != null) { - ModuleTest.responses.add(new Pair(response.getCorrelationID(), response.getResultCode())); - synchronized (_testerMain.getThreadContext()) { _testerMain.getThreadContext().notify();}; - } - } - @Override - public void onDeleteSubMenuResponse(DeleteSubMenuResponse response) { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage(response, true); - else Log.i(TAG, "" + response); - - if (waitingForResponse && _testerMain.getThreadContext() != null) { - ModuleTest.responses.add(new Pair(response.getCorrelationID(), response.getResultCode())); - synchronized (_testerMain.getThreadContext()) { _testerMain.getThreadContext().notify();}; - } - } - @Override - public void onEncodedSyncPDataResponse(EncodedSyncPDataResponse response) { - Log.i("SmartDeviceLinkp", response.getInfo() + response.getResultCode() + response.getSuccess()); - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage(response, true); - else Log.i(TAG, "" + response); - - if (waitingForResponse && _testerMain.getThreadContext() != null) { - ModuleTest.responses.add(new Pair(response.getCorrelationID(), response.getResultCode())); - synchronized (_testerMain.getThreadContext()) { _testerMain.getThreadContext().notify();}; - } - } - @Override - public void onResetGlobalPropertiesResponse(ResetGlobalPropertiesResponse response) { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage(response, true); - else Log.i(TAG, "" + response); - - if (waitingForResponse && _testerMain.getThreadContext() != null) { - ModuleTest.responses.add(new Pair(response.getCorrelationID(), response.getResultCode())); - synchronized (_testerMain.getThreadContext()) { _testerMain.getThreadContext().notify();}; - } - } - @Override - public void onSetMediaClockTimerResponse(SetMediaClockTimerResponse response) { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage(response, true); - else Log.i(TAG, "" + response); - - if (waitingForResponse && _testerMain.getThreadContext() != null) { - ModuleTest.responses.add(new Pair(response.getCorrelationID(), response.getResultCode())); - synchronized (_testerMain.getThreadContext()) { _testerMain.getThreadContext().notify();}; - } - } - @Override - public void onSpeakResponse(SpeakResponse response) { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage(response, true); - else Log.i(TAG, "" + response); - - if (waitingForResponse && _testerMain.getThreadContext() != null) { - ModuleTest.responses.add(new Pair(response.getCorrelationID(), response.getResultCode())); - synchronized (_testerMain.getThreadContext()) { _testerMain.getThreadContext().notify();}; - } - } - @Override - public void onSubscribeButtonResponse(SubscribeButtonResponse response) { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage(response, true); - else Log.i(TAG, "" + response); - - if (waitingForResponse && _testerMain.getThreadContext() != null) { - ModuleTest.responses.add(new Pair(response.getCorrelationID(), response.getResultCode())); - synchronized (_testerMain.getThreadContext()) { _testerMain.getThreadContext().notify();}; - } - } - @Override - public void onUnsubscribeButtonResponse(UnsubscribeButtonResponse response) { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage(response, true); - else Log.i(TAG, "" + response); - - if (waitingForResponse && _testerMain.getThreadContext() != null) { - ModuleTest.responses.add(new Pair(response.getCorrelationID(), response.getResultCode())); - synchronized (_testerMain.getThreadContext()) { _testerMain.getThreadContext().notify();}; - } - } - @Override - public void onOnDriverDistraction(OnDriverDistraction notification) { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage(notification, true); - else Log.i(TAG, "" + notification); - } - @Override - public void onGenericResponse(GenericResponse response) { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage(response, true); - else Log.i(TAG, "" + response); - - if (waitingForResponse && _testerMain.getThreadContext() != null) { - ModuleTest.responses.add(new Pair(response.getCorrelationID(), response.getResultCode())); - synchronized (_testerMain.getThreadContext()) { _testerMain.getThreadContext().notify();}; - } - } - @Override - public void onOnButtonEvent(OnButtonEvent notification) { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage(notification, true); - else Log.i(TAG, "" + notification); - } - @Override - public void onOnButtonPress(OnButtonPress notification) { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage(notification, true); - else Log.i(TAG, "" + notification); - - switch(notification.getButtonName()) - { - case OK: - playPauseAnnoyingRepetitiveAudio(); - break; - case SEEKLEFT: - break; - case SEEKRIGHT: - break; - case TUNEUP: - break; - case TUNEDOWN: - break; - default: - break; - } - } - - /********************************* - ** SmartDeviceLink SmartDeviceLink Updated Callback's ** - *********************************/ - @Override - public void onAddCommandResponse(AddCommandResponse response) { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage(response, true); - else Log.i(TAG, "" + response); - - if (waitingForResponse && _testerMain.getThreadContext() != null) { - ModuleTest.responses.add(new Pair(response.getCorrelationID(), response.getResultCode())); - synchronized (_testerMain.getThreadContext()) { _testerMain.getThreadContext().notify();}; - } - } - @Override - public void onAlertResponse(AlertResponse response) { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage(response, true); - else Log.i(TAG, "" + response); - - if (waitingForResponse && _testerMain.getThreadContext() != null) { - ModuleTest.responses.add(new Pair(response.getCorrelationID(), response.getResultCode())); - synchronized (_testerMain.getThreadContext()) { _testerMain.getThreadContext().notify();}; - } - } - @Override - public void onPerformInteractionResponse(PerformInteractionResponse response) { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage(response, true); - else Log.i(TAG, "" + response); - - if (waitingForResponse && _testerMain.getThreadContext() != null) { - ModuleTest.responses.add(new Pair(response.getCorrelationID(), response.getResultCode())); - synchronized (_testerMain.getThreadContext()) { _testerMain.getThreadContext().notify();}; - } - } - @Override - public void onSetGlobalPropertiesResponse(SetGlobalPropertiesResponse response) { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage(response, true); - else Log.i(TAG, "" + response); - - if (waitingForResponse && _testerMain.getThreadContext() != null) { - ModuleTest.responses.add(new Pair(response.getCorrelationID(), response.getResultCode())); - synchronized (_testerMain.getThreadContext()) { _testerMain.getThreadContext().notify();}; - } - } - @Override - public void onShowResponse(ShowResponse response) { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage(response, true); - else Log.i(TAG, "" + response); - - if (waitingForResponse && _testerMain.getThreadContext() != null) { - ModuleTest.responses.add(new Pair(response.getCorrelationID(), response.getResultCode())); - synchronized (_testerMain.getThreadContext()) { _testerMain.getThreadContext().notify();}; - } - } - @Override - public void onOnTBTClientState(OnTBTClientState notification) { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage(notification, true); - else Log.i(TAG, "" + notification); - } - - /********************************* - ** SmartDeviceLink SmartDeviceLink Policies Callback's ** - *********************************/ - @Override - public void onOnPermissionsChange(OnPermissionsChange notification) { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage(notification, true); - else Log.i(TAG, "" + notification); - } - @Override - public void onOnEncodedSyncPData(OnEncodedSyncPData notification) { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage(notification, true); - else Log.i(TAG, "" + notification); - } - @Override - public IBinder onBind(Intent intent) { - if (_msgAdapter == null) _msgAdapter = SmartDeviceLinkTester.getMessageAdapter(); - if (_msgAdapter != null) _msgAdapter.logMessage("Service on Bind"); - else Log.i(TAG, "Service on Bind"); - return new Binder(); - } -} -- 2.7.4