Skip to content
This repository was archived by the owner on Nov 9, 2022. It is now read-only.

Android 9 support #286

Merged
merged 11 commits into from
Dec 26, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
Changelog
=========

0.4.0 (2018-10-04)
* Deprecating android_10 and android_15; adding support for Android P.
* Minor fixes for visualization layers.
* Made LocalBinder class public.
* Gradle 4.10.2 update.
* Contributors: Rob (rking788), Juan Ignacio Ubeira, Julian Cerruti.

0.3.3 (2017-04-17)
------------------
* Several MasterChooser fixes and improvements.
Expand Down
2 changes: 0 additions & 2 deletions android_15/AndroidManifest.xml

This file was deleted.

35 changes: 0 additions & 35 deletions android_15/build.gradle

This file was deleted.

9 changes: 4 additions & 5 deletions android_acm_serial/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,17 @@
*/

dependencies {
compile project(':android_15')
compile project(':android_10')
compile project(':android_core_components')
}

apply plugin: 'com.android.library'

android {
compileSdkVersion 25
compileSdkVersion 28

defaultConfig {
minSdkVersion 15
targetSdkVersion 15
minSdkVersion 16
targetSdkVersion 28
versionCode 1
versionName "1.0"
}
Expand Down
1 change: 1 addition & 0 deletions android_benchmarks/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

<application
android:icon="@mipmap/icon"
Expand Down
8 changes: 4 additions & 4 deletions android_benchmarks/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,18 @@

dependencies {
compile 'org.ros.rosjava_core:rosjava_benchmarks:[0.3,0.4)'
compile project(':android_10')
compile project(':android_core_components')
}

apply plugin: 'com.android.application'

android {
compileSdkVersion 25
compileSdkVersion 28

defaultConfig {
minSdkVersion 10
minSdkVersion 16
applicationId "org.ros.android.android_benchmarks"
targetSdkVersion 10
targetSdkVersion 28
versionCode 1
versionName "1.0"
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="org.ros.android.android_10">
package="org.ros.android.android_core_components">



Expand All @@ -10,6 +10,7 @@
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

<application
android:icon="@mipmap/icon"
Expand Down
11 changes: 7 additions & 4 deletions android_10/build.gradle → android_core_components/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,20 @@ dependencies {
compile "org.ros.rosjava_core:rosjava:[0.3.2,0.4)"
compile "org.ros.rosjava_messages:diagnostic_msgs:[1.12,1.13)"
compile "org.ros.rosjava_messages:sensor_msgs:[1.12,1.13)"
compile "com.android.support:appcompat-v7:25.1.0"
compile 'org.ros.rosjava_core:rosjava_geometry:[0.3,0.4)'
compile 'org.ros.rosjava_messages:visualization_msgs:[1.12,1.13)'
compile "com.android.support:appcompat-v7:28.0.0"
compile 'com.android.support:support-v4:28.0.0'
}

apply plugin: "com.android.library"

android {
compileSdkVersion 25
compileSdkVersion 28

defaultConfig {
minSdkVersion 10
targetSdkVersion 10
minSdkVersion 16
targetSdkVersion 28
versionCode 1
versionName "1.0"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import org.ros.android.android_10.R;
import org.ros.android.android_core_components.R;
import org.ros.exception.RosRuntimeException;
import org.ros.internal.node.client.MasterClient;
import org.ros.internal.node.xmlrpc.XmlRpcTimeoutException;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,25 +20,29 @@

import android.app.AlertDialog;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.graphics.Color;
import android.net.wifi.WifiManager;
import android.net.wifi.WifiManager.WifiLock;
import android.os.AsyncTask;
import android.os.Binder;
import android.os.Build;
import android.os.Handler;
import android.os.IBinder;
import android.os.PowerManager;
import android.os.PowerManager.WakeLock;
import android.support.v7.app.NotificationCompat;
import android.util.Log;
import android.view.WindowManager;
import android.widget.Toast;
import org.ros.RosCore;
import org.ros.android.android_10.R;
import org.ros.android.android_core_components.R;
import org.ros.concurrent.ListenerGroup;
import org.ros.concurrent.SignalRunnable;
import org.ros.exception.RosRuntimeException;
Expand Down Expand Up @@ -68,6 +72,9 @@ public class NodeMainExecutorService extends Service implements NodeMainExecutor
public static final String EXTRA_NOTIFICATION_TITLE = "org.ros.android.EXTRA_NOTIFICATION_TITLE";
public static final String EXTRA_NOTIFICATION_TICKER = "org.ros.android.EXTRA_NOTIFICATION_TICKER";

public static final String NOTIFICATION_CHANNEL_ID = "org.ros.android";
public static final String CHANNEL_NAME = "ROS Android background service";

private final NodeMainExecutor nodeMainExecutor;
private final IBinder binder;
private final ListenerGroup<NodeMainExecutorServiceListener> listeners;
Expand Down Expand Up @@ -112,7 +119,7 @@ public void onCreate() {
// We must be running on a pre-Honeycomb device.
Log.w(TAG, "Unable to acquire high performance wifi lock.");
}
WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
WifiManager wifiManager = WifiManager.class.cast(getApplicationContext().getSystemService(WIFI_SERVICE));
wifiLock = wifiManager.createWifiLock(wifiLockType, TAG);
wifiLock.acquire();
}
Expand Down Expand Up @@ -157,7 +164,7 @@ public void onClick(DialogInterface dialog, int which) {
}
});
AlertDialog alertDialog = builder.create();
alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_TOAST);
alertDialog.show();
}
});
Expand Down Expand Up @@ -211,18 +218,11 @@ public int onStartCommand(Intent intent, int flags, int startId) {
if (intent.getAction().equals(ACTION_START)) {
Preconditions.checkArgument(intent.hasExtra(EXTRA_NOTIFICATION_TICKER));
Preconditions.checkArgument(intent.hasExtra(EXTRA_NOTIFICATION_TITLE));
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
Intent notificationIntent = new Intent(this, NodeMainExecutorService.class);
notificationIntent.setAction(NodeMainExecutorService.ACTION_SHUTDOWN);
PendingIntent pendingIntent = PendingIntent.getService(this, 0, notificationIntent, 0);
Notification notification = builder.setContentIntent(pendingIntent)
.setSmallIcon(R.mipmap.icon)
.setTicker(intent.getStringExtra(EXTRA_NOTIFICATION_TICKER))
.setWhen(System.currentTimeMillis())
.setContentTitle(intent.getStringExtra(EXTRA_NOTIFICATION_TITLE))
.setAutoCancel(true)
.setContentText("Tap to shutdown.")
.build();
Notification notification = buildNotification(intent, pendingIntent);

startForeground(ONGOING_NOTIFICATION, notification);
}
if (intent.getAction().equals(ACTION_SHUTDOWN)) {
Expand Down Expand Up @@ -312,4 +312,31 @@ public void run() {
}
});
}

private Notification buildNotification(Intent intent, PendingIntent pendingIntent) {
Notification notification = null;
Notification.Builder builder = null;
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.O) {
NotificationChannel chan = new NotificationChannel(
NOTIFICATION_CHANNEL_ID, CHANNEL_NAME, NotificationManager.IMPORTANCE_NONE);
chan.setLightColor(Color.BLUE);
chan.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
assert manager != null;
manager.createNotificationChannel(chan);
builder = new Notification.Builder(this, NOTIFICATION_CHANNEL_ID);
} else {
builder = new Notification.Builder(this);
}
notification = builder.setContentIntent(pendingIntent)
.setOngoing(true)
.setSmallIcon(R.mipmap.icon)
.setTicker(intent.getStringExtra(EXTRA_NOTIFICATION_TICKER))
.setWhen(System.currentTimeMillis())
.setContentTitle(intent.getStringExtra(EXTRA_NOTIFICATION_TITLE))
.setAutoCancel(true)
.setContentText("Tap to shutdown.")
.build();
return notification;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
import android.widget.TableLayout;
import diagnostic_msgs.DiagnosticArray;
import diagnostic_msgs.DiagnosticStatus;
import org.ros.android.android_10.R;
import org.ros.android.android_core_components.R;
import org.ros.message.MessageListener;
import org.ros.namespace.GraphName;
import org.ros.node.ConnectedNode;
Expand Down Expand Up @@ -85,7 +85,7 @@ private void init() {

@Override
public GraphName getDefaultNodeName() {
return GraphName.of("android_10/diagnostics_array_view");
return GraphName.of("android_core_components/diagnostics_array_view");
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@
import android.view.View.OnTouchListener;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import org.ros.android.android_15.R;

import org.ros.android.android_core_components.R;
import org.ros.namespace.GraphName;
import org.ros.node.ConnectedNode;
import org.ros.node.Node;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import org.ros.android.android_15.R;

import org.ros.android.android_core_components.R;
import org.ros.message.MessageListener;
import org.ros.namespace.GraphName;
import org.ros.node.ConnectedNode;
Expand Down
1 change: 1 addition & 0 deletions android_tutorial_camera/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

<application
android:icon="@mipmap/icon"
Expand Down
8 changes: 4 additions & 4 deletions android_tutorial_camera/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,18 @@
*/

dependencies {
compile project(':android_10')
compile project(':android_core_components')
}

apply plugin: 'com.android.application'

android {
compileSdkVersion 25
compileSdkVersion 28

defaultConfig {
minSdkVersion 10
minSdkVersion 16
applicationId "org.ros.android.android_tutorial_camera"
targetSdkVersion 10
targetSdkVersion 28
versionCode 1
versionName "1.0"
}
Expand Down
1 change: 1 addition & 0 deletions android_tutorial_image_transport/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

<application
android:icon="@mipmap/icon"
Expand Down
8 changes: 4 additions & 4 deletions android_tutorial_image_transport/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,18 @@
*/

dependencies {
compile project(':android_10')
compile project(':android_core_components')
}

apply plugin: 'com.android.application'

android {
compileSdkVersion 25
compileSdkVersion 28

defaultConfig {
minSdkVersion 10
minSdkVersion 16
applicationId "org.ros.android.android_tutorial_image_transport"
targetSdkVersion 10
targetSdkVersion 28
versionCode 1
versionName "1.0"
}
Expand Down
1 change: 1 addition & 0 deletions android_tutorial_map_viewer/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

<application
android:icon="@mipmap/icon"
Expand Down
Loading