Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build with Docker #3

Open
wants to merge 5 commits into
base: 4.1
Choose a base branch
from
Open
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
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 0 additions & 8 deletions .githooks/clang-format

This file was deleted.

25 changes: 0 additions & 25 deletions .githooks/exec_tool.sh

This file was deleted.

8 changes: 0 additions & 8 deletions .githooks/linux-x64/clang-format

This file was deleted.

Binary file removed .githooks/mac-x64/clang-format
Binary file not shown.
26 changes: 0 additions & 26 deletions .githooks/pre-commit

This file was deleted.

29 changes: 29 additions & 0 deletions .github/workflows/build-with-docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: Build Android

on:
push:
branches:
- 'master'
tags:
- '*'
pull_request:

jobs:
dockerRun:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
ubuntu: [ 'focal' ]
container:
image: hannesa2/alexa-auto-${{ matrix.ubuntu }}-4:pr-1 # https://hub.docker.com/repository/docker/hannesa2/alexa-auto-focal-4
options: --user root
steps:
- name: Checkout
uses: actions/checkout@v3.0.2
- name: Build with Docker
run: |
sudo apt-get update
sudo apt-get install openjdk-11-jre -y
cd aacs/android/sample-app
./gradlew assembleLocalRelease -PcleanDeps -PacceptLicenses -Parch=armv8 -PacceptLicenses=true -PconanOptions=aac-module-amazonlite:default_model=X_125k.en-US.alexa+bmw+mini.cpp,pryon-lite:package_suffix=alexa-custom-assistant,aac-module-local-voice-control:with_coassistant=True
2 changes: 1 addition & 1 deletion aacs/android/app-components/alexa-auto-apis/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ android {
defaultConfig {
minSdkVersion 25
versionCode 1
versionName "4.1"
versionName "4.1.1"
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
}
buildTypes {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ android {
minSdkVersion 26
targetSdkVersion 28
versionCode 1
versionName "4.1"
versionName "4.1.1"
}
buildTypes {
release {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ android {
minSdkVersion 22
targetSdkVersion 28
versionCode 1
versionName "4.1"
versionName "4.1.1"
buildConfigField 'int', 'VERSION_CODE', "1"
buildConfigField 'String', 'VERSION_NAME', "\"4.1\""
buildConfigField 'String', 'VERSION_NAME', "\"4.1.1\""
}

buildTypes {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,10 @@

import com.amazon.apl.android.APLOptions;
import com.amazon.apl.android.RootConfig;
import com.amazon.apl.android.audio.RuntimeAudioPlayerFactory;
import com.amazon.apl.android.dependencies.IOpenUrlCallback;
import com.amazon.apl.android.dependencies.impl.OpenUrlCallback;
import com.amazon.apl.android.media.RuntimeMediaPlayerFactory;
import com.amazon.apl.android.render.BuildConfig;
import com.amazon.apl.android.render.dagger.ActivityContext;
import com.amazon.apl.android.render.dagger.ActivityScope;
Expand All @@ -42,12 +44,8 @@ public class APLOptionsModule {
* @return an instance of {@link APLOptions}.
*/
@Provides
APLOptions.Builder provideAPLOptions(final APLMediaPlayerProvider mediaProvider,
final IOpenUrlCallback openUrlCallback, final APLTtsPlayerProvider ttsProvider) {
return APLOptions.builder()
.mediaPlayerProvider(mediaProvider)
.openUrlCallback(openUrlCallback)
.ttsPlayerProvider(ttsProvider);
APLOptions.Builder provideAPLOptions(final IOpenUrlCallback openUrlCallback) {
return APLOptions.builder().openUrlCallback(openUrlCallback);
}

/**
Expand All @@ -64,14 +62,17 @@ public IOpenUrlCallback provideOpenUrl(@ActivityContext final Context context) {
* @return an instance of {@link RootConfig}
*/
@Provides
public RootConfig provideRootConfig(@ActivityContext final Context context) {
public RootConfig provideRootConfig(@ActivityContext final Context context, final APLTtsPlayerProvider ttsProvider,
final APLMediaPlayerProvider mediaProvider) {
Map<String, String> autoEnvironmentValues = new HashMap<>();
autoEnvironmentValues.put("drivingState", "moving");
return RootConfig.create(context)
.agent(BuildConfig.VERSION_NAME, "1.9")
.registerDataSource("dynamicIndexList")
.registerDataSource("dynamicTokenList")
.setEnvironmentValue("automobile", autoEnvironmentValues)
.audioPlayerFactory(new RuntimeAudioPlayerFactory(ttsProvider))
.mediaPlayerFactory(new RuntimeMediaPlayerFactory(mediaProvider))
.allowOpenUrl(false);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,89 +22,46 @@
import androidx.annotation.NonNull;

import com.amazon.apl.android.dependencies.impl.MediaPlayer;
import com.amazon.apl.android.render.audio.AudioFocusController;
import com.amazon.apl.android.render.interfaces.IAPLEventSender;
import com.amazon.apl.android.render.interfaces.IAPLTokenProvider;

/**
* Provides a wrapper of the MediaPlayer player that can report activity events
* and request Android audio focus. The Media player is used for playing video
* content.
* Provides a wrapper of the MediaPlayer player that can report activity events.
* The Media player is used for playing video content. Android audio focus
* management is built into the base MediaPlayer class.
*/
public class APLMediaPlayer extends MediaPlayer implements AudioFocusController.PlaybackController {
public class APLMediaPlayer extends MediaPlayer {
private static final String TAG = APLMediaPlayer.class.getSimpleName();

private final IAPLEventSender mAplEventSender;
private final IAPLTokenProvider mAplTokenProvider;
private final AudioFocusController mAudioFocusController;

public APLMediaPlayer(@NonNull Context context, @NonNull TextureView view, @NonNull IAPLEventSender aplEventSender,
@NonNull IAPLTokenProvider aplTokenProvider) {
super(context, view);
Log.v(TAG, "Created");
mAplEventSender = aplEventSender;
mAplTokenProvider = aplTokenProvider;
AudioManager audioManager =
(AudioManager) context.getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
mAudioFocusController = new AudioFocusController(audioManager, this);
}

/**
* {@inheritDoc}
*/
@Override
public void play() {
Log.v(TAG, "play: ");
mAudioFocusController.startPlaybackAfterAcquiringFocus();
Log.v(TAG, "play:");
super.play();
mAplEventSender.sendActivityEventRequest(mAplTokenProvider.getToken(), IAPLEventSender.ActivityEvent.ACTIVATED);
}

/**
* {@inheritDoc}
*/
@Override
public void stop() {
Log.v(TAG, "stop: ");
super.stop();
mAudioFocusController.relinquishAudioFocusIfCurrentlyAcquired();
mAplEventSender.sendActivityEventRequest(
mAplTokenProvider.getToken(), IAPLEventSender.ActivityEvent.DEACTIVATED);
}

@Override
public void startPlaybackNow() {
Log.v(TAG, "startPlaybackNow: ");
super.play();
mAplEventSender.sendActivityEventRequest(mAplTokenProvider.getToken(), IAPLEventSender.ActivityEvent.ACTIVATED);
}

@Override
public void requestResumingPlayback() {
Log.v(TAG, "requestResumingPlayback: ");
super.play();
mAplEventSender.sendActivityEventRequest(mAplTokenProvider.getToken(), IAPLEventSender.ActivityEvent.ACTIVATED);
}

@Override
public void requestPausePlayback() {
Log.v(TAG, "requestPausePlayback: ");
super.pause();
}

@Override
public void requestStopPlayback() {
Log.v(TAG, "requestStopPlayback: ");
Log.v(TAG, "stop:");
super.stop();
mAplEventSender.sendActivityEventRequest(
mAplTokenProvider.getToken(), IAPLEventSender.ActivityEvent.DEACTIVATED);
}

@Override
public void adjustPlaybackVolume(float volumeMultiplier) {
Log.v(TAG, "adjustPlaybackVolume: " + volumeMultiplier);
}

@Override
public void failedToAcquireFocus() {
Log.e(TAG, "failedToAcquireFocus: ");
super.stop();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,15 @@ public void prepare(@NonNull String source, @NonNull ITtsSourceProvider ttsSourc
}
}

@Override
public void prepare(@NonNull String source) {
try {
getPlayer().prepare(source, new URL(source));
} catch (Exception e) {
Log.e(TAG, "Could not set the speech source", e);
}
}

@Override
public void onDocumentFinish() {
if (mTtsPlayer != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import static com.amazon.alexa.auto.apps.common.Constants.APL_RUNTIME_PROPERTIES;
import static com.amazon.alexa.auto.apps.common.Constants.APL_RUNTIME_PROPERTY_DRIVING_STATE_NAME;
import static com.amazon.alexa.auto.apps.common.Constants.APL_RUNTIME_PROPERTY_THEME_NAME;
import static com.amazon.alexa.auto.apps.common.Constants.APL_RUNTIME_PROPERTY_VIDEO_NAME;

import android.content.Context;
import android.content.SharedPreferences;
Expand Down Expand Up @@ -380,13 +381,17 @@ private String constructAPLRuntimeProperties() {
Preconditions.checkNotNull(sharedPreferences);
String drivingStateValue = sharedPreferences.getString(APL_RUNTIME_PROPERTY_DRIVING_STATE_NAME, "");
String themeValue = sharedPreferences.getString(APL_RUNTIME_PROPERTY_THEME_NAME, "");
String videoValue = sharedPreferences.getString(APL_RUNTIME_PROPERTY_VIDEO_NAME, "");

if (!drivingStateValue.isEmpty()) {
properties.put(APL_RUNTIME_PROPERTY_DRIVING_STATE_NAME, drivingStateValue);
}
if (!themeValue.isEmpty()) {
properties.put(APL_RUNTIME_PROPERTY_THEME_NAME, themeValue);
}
if (!videoValue.isEmpty()) {
properties.put(APL_RUNTIME_PROPERTY_VIDEO_NAME, videoValue);
}

return properties.toString();
} catch (JSONException e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ android {
defaultConfig {
minSdkVersion 26
versionCode 1
versionName "4.1"
versionName "4.1.1"
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
}
buildTypes {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ android {
defaultConfig {
minSdkVersion 25
versionCode 1
versionName "4.1"
versionName "4.1.1"
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
}
buildTypes {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,9 @@ public class Constants {
public static final String APL_RUNTIME_PROPERTY_THEME_NAME = "theme";
public static final String APL_RUNTIME_PROPERTY_DRIVING_STATE_VALUE_MOVING = "moving";
public static final String APL_RUNTIME_PROPERTY_DRIVING_STATE_VALUE_PARKED = "parked";
public static final String APL_RUNTIME_PROPERTY_VIDEO_NAME = "video";
public static final String APL_RUNTIME_PROPERTY_VIDEO_VALUE_ENABLED = "enabled";
public static final String APL_RUNTIME_PROPERTY_VIDEO_VALUE_DISABLED = "disabled";

// Car UX Restrictions
public static final String CAR_UX_RESTRICTIONS_DRIVING_STATE_ACTION =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ android {
minSdkVersion 26
targetSdkVersion 29
versionCode 1
versionName "4.1"
versionName "4.1.1"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles 'consumer-rules.pro'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ android {
defaultConfig {
minSdkVersion 26
versionCode 1
versionName "4.1"
versionName "4.1.1"
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
}
buildTypes {
Expand Down
Loading