summaryrefslogtreecommitdiff
path: root/android
diff options
context:
space:
mode:
Diffstat (limited to 'android')
-rw-r--r--android/BuildInstructions.md2
-rw-r--r--android/controller/src/main/java/com/zeroc/testcontroller/ControllerActivity.java52
-rw-r--r--android/controller/src/main/java/com/zeroc/testcontroller/ControllerApp.java74
-rw-r--r--android/controller/src/main/res/layout/main.xml40
4 files changed, 143 insertions, 25 deletions
diff --git a/android/BuildInstructions.md b/android/BuildInstructions.md
index 294af561dc8..8b4acec1b1e 100644
--- a/android/BuildInstructions.md
+++ b/android/BuildInstructions.md
@@ -17,7 +17,7 @@ include pre-compiled JAR files.
Building any Ice application for Android requires Android Studio and the Android
SDK build tools. We tested with the following components:
-- Android Studio 2.4 preview
+- Android Studio 3.0 preview
- Android SDK 25
- Android Build Tools 26.0.0 rc1
diff --git a/android/controller/src/main/java/com/zeroc/testcontroller/ControllerActivity.java b/android/controller/src/main/java/com/zeroc/testcontroller/ControllerActivity.java
index 0dd93d55933..e7001f6f156 100644
--- a/android/controller/src/main/java/com/zeroc/testcontroller/ControllerActivity.java
+++ b/android/controller/src/main/java/com/zeroc/testcontroller/ControllerActivity.java
@@ -15,13 +15,16 @@ import android.content.Context;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.widget.*;
+import android.view.View;
public class ControllerActivity extends ListActivity
{
private WifiManager _wifiManager;
private WifiManager.MulticastLock _lock;
- private LinkedList<String> _strings = new LinkedList<String>();
- private ArrayAdapter<String> _adapter;
+ private LinkedList<String> _output = new LinkedList<String>();
+ private ArrayAdapter<String> _outputAdapter;
+ private ArrayAdapter<String> _ipv4Adapter;
+ private ArrayAdapter<String> _ipv6Adapter;
@Override
public void onCreate(Bundle savedInstanceState)
@@ -33,15 +36,52 @@ public class ControllerActivity extends ListActivity
_lock = _wifiManager.createMulticastLock("com.zeroc.testcontroller");
_lock.acquire();
- _adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, _strings);
- setListAdapter(_adapter);
+ _outputAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, _output);
+ setListAdapter(_outputAdapter);
final ControllerApp app = (ControllerApp)getApplication();
+ final java.util.List<String> ipv4Addresses = app.getAddresses(false);
+ _ipv4Adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, ipv4Addresses);
+ Spinner s = (Spinner)findViewById(R.id.ipv4);
+ s.setAdapter(_ipv4Adapter);
+ s.setOnItemSelectedListener(new android.widget.AdapterView.OnItemSelectedListener()
+ {
+ @Override
+ public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
+ {
+ app.setIpv4Address(ipv4Addresses.get((int)id));
+ }
+
+ @Override
+ public void onNothingSelected(AdapterView<?> arg0)
+ {
+ }
+ });
+ s.setSelection(0);
+
+ final java.util.List<String> ipv6Addresses = app.getAddresses(true);
+ _ipv6Adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, ipv6Addresses);
+ s = (Spinner)findViewById(R.id.ipv6);
+ s.setAdapter(_ipv6Adapter);
+ s.setOnItemSelectedListener(new android.widget.AdapterView.OnItemSelectedListener()
+ {
+ @Override
+ public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
+ {
+ app.setIpv6Address(ipv6Addresses.get((int)id));
+ }
+
+ @Override
+ public void onNothingSelected(AdapterView<?> arg0)
+ {
+ }
+ });
+ s.setSelection(0);
app.startController(this);
}
public synchronized void println(String data)
{
- _strings.add(data);
- _adapter.notifyDataSetChanged();
+ _output.add(data);
+ _outputAdapter.notifyDataSetChanged();
}
}
diff --git a/android/controller/src/main/java/com/zeroc/testcontroller/ControllerApp.java b/android/controller/src/main/java/com/zeroc/testcontroller/ControllerApp.java
index df3bff2bedb..3c43d86416b 100644
--- a/android/controller/src/main/java/com/zeroc/testcontroller/ControllerApp.java
+++ b/android/controller/src/main/java/com/zeroc/testcontroller/ControllerApp.java
@@ -10,16 +10,12 @@
package com.zeroc.testcontroller;
import java.io.*;
-import java.util.Optional;
-import java.util.OptionalInt;
+import java.util.*;
import com.zeroc.Ice.Logger;
import com.zeroc.Ice.Communicator;
import com.zeroc.IceInternal.Time;
-import dalvik.system.DexClassLoader;
-
-import android.content.Context;
import android.os.Build;
import android.util.Log;
import android.app.Application;
@@ -33,6 +29,8 @@ public class ControllerApp extends Application
private final String TAG = "ControllerApp";
private ControllerHelper _helper;
private ControllerActivity _controller;
+ private String _ipv4Address;
+ private String _ipv6Address;
static private class TestSuiteBundle
{
@@ -116,6 +114,44 @@ public class ControllerApp extends Application
com.zeroc.Ice.Util.setProcessLogger(new AndroidLogger(""));
}
+ synchronized public void setIpv4Address(String address)
+ {
+ _ipv4Address = address;
+ }
+
+ synchronized public void setIpv6Address(String address)
+ {
+ int i = address.indexOf("%");
+ _ipv6Address = i == -1 ? address : address.substring(i);
+ }
+
+ public List<String> getAddresses(boolean ipv6)
+ {
+ List<String> addresses = new java.util.ArrayList<String>();
+ try
+ {
+ java.util.Enumeration<java.net.NetworkInterface> ifaces = java.net.NetworkInterface.getNetworkInterfaces();
+ while(ifaces.hasMoreElements())
+ {
+ java.net.NetworkInterface iface = ifaces.nextElement();
+ java.util.Enumeration<java.net.InetAddress> addrs = iface.getInetAddresses();
+ while (addrs.hasMoreElements())
+ {
+ java.net.InetAddress addr = addrs.nextElement();
+ if((ipv6 && addr instanceof java.net.Inet6Address) ||
+ (!ipv6 && !(addr instanceof java.net.Inet6Address)))
+ {
+ addresses.add(addr.getHostAddress());
+ }
+ }
+ }
+ }
+ catch(java.net.SocketException ex)
+ {
+ }
+ return addresses;
+ }
+
public synchronized void startController(ControllerActivity controller)
{
if(_helper == null)
@@ -166,8 +202,8 @@ public class ControllerApp extends Application
initData.properties.setProperty("ControllerAdapter.Endpoints", "tcp");
initData.properties.setProperty("Ice.Trace.Network", "3");
initData.properties.setProperty("Ice.Trace.Protocol", "1");
-
initData.properties.setProperty("ControllerAdapter.AdapterId", java.util.UUID.randomUUID().toString());
+ initData.properties.setProperty("Ice.Override.ConnectTimeout", "1000");
if(!isEmulator())
{
initData.properties.setProperty("Ice.Plugin.IceDiscovery", "IceDiscovery.PluginFactory");
@@ -176,13 +212,13 @@ public class ControllerApp extends Application
_communicator = com.zeroc.Ice.Util.initialize(initData);
com.zeroc.Ice.ObjectAdapter adapter = _communicator.createObjectAdapter("ControllerAdapter");
ProcessControllerPrx processController = ProcessControllerPrx.uncheckedCast(
- adapter.add(new ProcessControllerI("localhost"),
+ adapter.add(new ProcessControllerI(),
com.zeroc.Ice.Util.stringToIdentity("Android/ProcessController")));
adapter.activate();
if(isEmulator())
{
ProcessControllerRegistryPrx registry = ProcessControllerRegistryPrx.uncheckedCast(
- _communicator.stringToProxy("Util/ProcessControllerRegistry:tcp -h 10.0.2.2 -p 15001").ice_invocationTimeout(300));
+ _communicator.stringToProxy("Util/ProcessControllerRegistry:tcp -h 10.0.2.2 -p 15001"));
registerProcessController(adapter, registry, processController);
}
println("Android/ProcessController");
@@ -427,11 +463,6 @@ public class ControllerApp extends Application
class ProcessControllerI implements Test.Common.ProcessController
{
- public ProcessControllerI(String hostname)
- {
- _hostname = hostname;
- }
-
public Test.Common.ProcessPrx start(final String testsuite, final String exe, String[] args,
com.zeroc.Ice.Current current)
throws Test.Common.ProcessFailedException
@@ -453,13 +484,20 @@ public class ControllerApp extends Application
}
}
- public String getHost(String protocol, boolean ipv6,
- com.zeroc.Ice.Current current)
+ public String getHost(String protocol, boolean ipv6, com.zeroc.Ice.Current current)
{
- return _hostname;
+ if(isEmulator())
+ {
+ return "127.0.0.1";
+ }
+ else
+ {
+ synchronized(ControllerApp.this)
+ {
+ return ipv6 ? _ipv6Address : _ipv4Address;
+ }
+ }
}
-
- private String _hostname;
}
class ProcessI implements Test.Common.Process
diff --git a/android/controller/src/main/res/layout/main.xml b/android/controller/src/main/res/layout/main.xml
index dbc955a25d5..df4c8db98c7 100644
--- a/android/controller/src/main/res/layout/main.xml
+++ b/android/controller/src/main/res/layout/main.xml
@@ -5,6 +5,46 @@
android:layout_width="fill_parent"
android:layout_height="fill_parent">
+ <LinearLayout
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:paddingBottom="5dip">
+ <TextView
+ android:layout_width="5dip"
+ android:layout_weight="25"
+ android:layout_height="wrap_content"
+ android:text="IPv4"
+ android:layout_gravity="center_vertical"/>
+
+ <Spinner
+ android:id="@+id/ipv4"
+ android:layout_width="5dip"
+ android:layout_weight="75"
+ android:layout_height="wrap_content"
+ android:drawSelectorOnTop="false"/>
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:paddingBottom="5dip">
+ <TextView
+ android:layout_width="0dip"
+ android:layout_weight="25"
+ android:layout_height="wrap_content"
+ android:text="IPv6"
+ android:layout_gravity="center_vertical"/>
+
+ <Spinner
+ android:id="@+id/ipv6"
+ android:layout_width="0dip"
+ android:layout_weight="75"
+ android:layout_height="wrap_content"
+ android:drawSelectorOnTop="false"/>
+ </LinearLayout>
+
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"