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

Add Horologist to the annotation names. #120

Merged
merged 2 commits into from
May 6, 2022
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
12 changes: 6 additions & 6 deletions audio-ui/api/current.api
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
// Signature format: 4.0
package com.google.android.horologist.audioui {

@kotlin.RequiresOptIn(message="Horologist Audio is experimental. The API may be changed in the future.") @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention) public @interface ExperimentalAudioUiApi {
@kotlin.RequiresOptIn(message="Horologist Audio is experimental. The API may be changed in the future.") @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention) public @interface ExperimentalHorologistAudioUiApi {
}

public final class VolumePositionIndicatorKt {
method @androidx.compose.runtime.Composable @com.google.android.horologist.audioui.ExperimentalAudioUiApi public static void VolumePositionIndicator(kotlin.jvm.functions.Function0<com.google.android.horologist.audio.VolumeState> volumeState, optional androidx.compose.ui.Modifier modifier, optional boolean autoHide);
method @androidx.compose.runtime.Composable @com.google.android.horologist.audioui.ExperimentalHorologistAudioUiApi public static void VolumePositionIndicator(kotlin.jvm.functions.Function0<com.google.android.horologist.audio.VolumeState> volumeState, optional androidx.compose.ui.Modifier modifier, optional boolean autoHide);
}

public final class VolumeScreenKt {
method @androidx.compose.runtime.Composable @com.google.android.horologist.audioui.ExperimentalAudioUiApi public static void VolumeScreen(optional androidx.compose.ui.Modifier modifier, optional com.google.android.horologist.audioui.VolumeViewModel volumeViewModel, optional boolean showVolumeIndicator, optional androidx.compose.ui.focus.FocusRequester focusRequester);
method @androidx.compose.runtime.Composable @com.google.android.horologist.audioui.ExperimentalHorologistAudioUiApi public static void VolumeScreen(optional androidx.compose.ui.Modifier modifier, optional com.google.android.horologist.audioui.VolumeViewModel volumeViewModel, optional boolean showVolumeIndicator, optional androidx.compose.ui.focus.FocusRequester focusRequester);
}

@com.google.android.horologist.audioui.ExperimentalAudioUiApi public final class VolumeScrollableState implements androidx.compose.foundation.gestures.ScrollableState {
@com.google.android.horologist.audioui.ExperimentalHorologistAudioUiApi public final class VolumeScrollableState implements androidx.compose.foundation.gestures.ScrollableState {
ctor public VolumeScrollableState(com.google.android.horologist.audio.VolumeRepository volumeRepository, android.os.Vibrator vibrator);
method public float dispatchRawDelta(float delta);
method public boolean isScrollInProgress();
method public suspend Object? scroll(androidx.compose.foundation.MutatePriority scrollPriority, kotlin.jvm.functions.Function2<? super androidx.compose.foundation.gestures.ScrollScope,? super kotlin.coroutines.Continuation<? super kotlin.Unit>,?> block, kotlin.coroutines.Continuation<? super kotlin.Unit> p);
property public boolean isScrollInProgress;
}

@com.google.android.horologist.audioui.ExperimentalAudioUiApi public class VolumeViewModel extends androidx.lifecycle.ViewModel {
@com.google.android.horologist.audioui.ExperimentalHorologistAudioUiApi public class VolumeViewModel extends androidx.lifecycle.ViewModel {
ctor public VolumeViewModel(com.google.android.horologist.audio.VolumeRepository volumeRepository, com.google.android.horologist.audio.AudioOutputRepository audioOutputRepository, optional kotlin.jvm.functions.Function0<kotlin.Unit> onCleared, android.os.Vibrator vibrator);
method public final void decreaseVolume();
method public final kotlinx.coroutines.flow.StateFlow<com.google.android.horologist.audio.AudioOutput> getAudioOutput();
Expand All @@ -33,7 +33,7 @@ package com.google.android.horologist.audioui {
property public final kotlinx.coroutines.flow.StateFlow<com.google.android.horologist.audio.VolumeState> volumeState;
}

@com.google.android.horologist.audioui.ExperimentalAudioUiApi public static final class VolumeViewModel.Factory implements androidx.lifecycle.ViewModelProvider.Factory {
@com.google.android.horologist.audioui.ExperimentalHorologistAudioUiApi public static final class VolumeViewModel.Factory implements androidx.lifecycle.ViewModelProvider.Factory {
field public static final com.google.android.horologist.audioui.VolumeViewModel.Factory INSTANCE;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ package com.google.android.horologist.audioui

import com.google.android.horologist.audio.AudioOutput
import com.google.android.horologist.audio.AudioOutputRepository
import com.google.android.horologist.audio.ExperimentalAudioApi
import com.google.android.horologist.audio.ExperimentalHorologistAudioApi
import kotlinx.coroutines.flow.MutableStateFlow
@OptIn(ExperimentalAudioApi::class)
@OptIn(ExperimentalHorologistAudioApi::class)
class FakeAudioOutputRepository() : AudioOutputRepository {
override val audioOutput: MutableStateFlow<AudioOutput> = MutableStateFlow(AudioOutput.None)
override val available: MutableStateFlow<List<AudioOutput>> = MutableStateFlow(listOf())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@

package com.google.android.horologist.audioui

import com.google.android.horologist.audio.ExperimentalAudioApi
import com.google.android.horologist.audio.ExperimentalHorologistAudioApi
import com.google.android.horologist.audio.VolumeRepository
import com.google.android.horologist.audio.VolumeState
import kotlinx.coroutines.flow.MutableStateFlow

@OptIn(ExperimentalAudioApi::class)
class FakeVolumeRepository @OptIn(ExperimentalAudioApi::class) constructor(initial: VolumeState) : VolumeRepository {
@OptIn(ExperimentalHorologistAudioApi::class)
class FakeVolumeRepository @OptIn(ExperimentalHorologistAudioApi::class) constructor(initial: VolumeState) : VolumeRepository {
override val volumeState: MutableStateFlow<VolumeState> = MutableStateFlow(initial)

override fun increaseVolume() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,12 @@ import androidx.compose.ui.test.junit4.createComposeRule
import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.onRoot
import androidx.compose.ui.test.printToLog
import com.google.android.horologist.audio.ExperimentalAudioApi
import com.google.android.horologist.audio.ExperimentalHorologistAudioApi
import com.google.android.horologist.audio.VolumeState
import org.junit.Rule
import org.junit.Test

@OptIn(ExperimentalAudioApi::class, ExperimentalAudioUiApi::class)
@OptIn(ExperimentalHorologistAudioApi::class, ExperimentalHorologistAudioUiApi::class)
class VolumePositionIndicatorTest {
@get:Rule
val composeTestRule = createComposeRule().apply {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,14 @@ import androidx.compose.ui.test.junit4.createComposeRule
import androidx.compose.ui.test.onRoot
import androidx.compose.ui.test.performRotaryScrollInput
import androidx.test.platform.app.InstrumentationRegistry
import com.google.android.horologist.audio.ExperimentalAudioApi
import com.google.android.horologist.audio.ExperimentalHorologistAudioApi
import com.google.android.horologist.audio.VolumeState
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.test.runTest
import org.junit.Rule
import org.junit.Test

@OptIn(ExperimentalAudioApi::class, ExperimentalAudioUiApi::class, ExperimentalTestApi::class, kotlinx.coroutines.ExperimentalCoroutinesApi::class)
@OptIn(ExperimentalHorologistAudioApi::class, ExperimentalHorologistAudioUiApi::class, ExperimentalTestApi::class, kotlinx.coroutines.ExperimentalCoroutinesApi::class)

class VolumeScreenTest {
@get:Rule
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Devices
import androidx.compose.ui.tooling.preview.Preview
import com.google.android.horologist.audio.AudioOutput
import com.google.android.horologist.audio.ExperimentalAudioApi
import com.google.android.horologist.audio.ExperimentalHorologistAudioApi
import com.google.android.horologist.audio.VolumeState

@Preview(
Expand All @@ -41,7 +41,7 @@ import com.google.android.horologist.audio.VolumeState
backgroundColor = 0xff000000,
showBackground = true
)
@OptIn(ExperimentalAudioApi::class, ExperimentalAudioUiApi::class)
@OptIn(ExperimentalHorologistAudioApi::class, ExperimentalHorologistAudioUiApi::class)
@Composable
fun VolumeScreenPreview() {
val volume = VolumeState(5, 10)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,4 @@ package com.google.android.horologist.audioui
message = "Horologist Audio is experimental. The API may be changed in the future."
)
@Retention(AnnotationRetention.BINARY)
public annotation class ExperimentalAudioUiApi
public annotation class ExperimentalHorologistAudioUiApi
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.wear.compose.material.PositionIndicator
import com.google.android.horologist.audio.ExperimentalAudioApi
import com.google.android.horologist.audio.ExperimentalHorologistAudioApi
import com.google.android.horologist.audio.VolumeState
import kotlinx.coroutines.delay

Expand All @@ -38,8 +38,8 @@ import kotlinx.coroutines.delay
* for 2 seconds after any volume change, including when a new
* output device is selected.
*/
@ExperimentalAudioUiApi
@OptIn(ExperimentalAudioApi::class)
@ExperimentalHorologistAudioUiApi
@OptIn(ExperimentalHorologistAudioApi::class)
@Composable
public fun VolumePositionIndicator(
volumeState: () -> VolumeState,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ import androidx.wear.compose.material.InlineSlider
import androidx.wear.compose.material.Stepper
import androidx.wear.compose.material.Text
import com.google.android.horologist.audio.AudioOutput
import com.google.android.horologist.audio.ExperimentalAudioApi
import com.google.android.horologist.audio.ExperimentalHorologistAudioApi
import com.google.android.horologist.audio.VolumeState
import com.google.android.horologist.audio.ui.R
import kotlinx.coroutines.launch
Expand All @@ -73,8 +73,8 @@ import kotlinx.coroutines.launch
* See [VolumeViewModel]
* See [AudioManager.STREAM_MUSIC]
*/
@ExperimentalAudioUiApi
@OptIn(ExperimentalAudioApi::class)
@ExperimentalHorologistAudioUiApi
@OptIn(ExperimentalHorologistAudioApi::class)
@Composable
public fun VolumeScreen(
modifier: Modifier = Modifier,
Expand All @@ -98,8 +98,8 @@ public fun VolumeScreen(
)
}

@ExperimentalAudioUiApi
@OptIn(ExperimentalAudioApi::class)
@ExperimentalHorologistAudioUiApi
@OptIn(ExperimentalHorologistAudioApi::class)
@Composable
internal fun VolumeScreen(
modifier: Modifier = Modifier,
Expand Down Expand Up @@ -176,8 +176,8 @@ internal fun VolumeScreen(
}
}

@ExperimentalAudioUiApi
@OptIn(ExperimentalAudioApi::class)
@ExperimentalHorologistAudioUiApi
@OptIn(ExperimentalHorologistAudioApi::class)
@Composable
private fun AudioOutput.icon(): ImageVector {
return when (this) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,15 @@ import android.util.Log
import androidx.compose.foundation.MutatePriority
import androidx.compose.foundation.gestures.ScrollScope
import androidx.compose.foundation.gestures.ScrollableState
import com.google.android.horologist.audio.ExperimentalAudioApi
import com.google.android.horologist.audio.ExperimentalHorologistAudioApi
import com.google.android.horologist.audio.VolumeRepository

/**
* ScrollableState integration for VolumeControl to scroll events
* via RSB/Bezel to trigger volume changes.
*/
@ExperimentalAudioUiApi
@OptIn(ExperimentalAudioApi::class)
@ExperimentalHorologistAudioUiApi
@OptIn(ExperimentalHorologistAudioApi::class)
public class VolumeScrollableState(
private val volumeRepository: VolumeRepository,
private val vibrator: Vibrator
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import androidx.lifecycle.ViewModelProvider.AndroidViewModelFactory.Companion.AP
import androidx.lifecycle.viewmodel.CreationExtras
import com.google.android.horologist.audio.AudioOutput
import com.google.android.horologist.audio.AudioOutputRepository
import com.google.android.horologist.audio.ExperimentalAudioApi
import com.google.android.horologist.audio.ExperimentalHorologistAudioApi
import com.google.android.horologist.audio.SystemAudioRepository
import com.google.android.horologist.audio.VolumeRepository
import com.google.android.horologist.audio.VolumeState
Expand All @@ -40,8 +40,8 @@ import kotlinx.coroutines.flow.StateFlow
* See [AudioManager.setStreamVolume]
* See [AudioManager.STREAM_MUSIC]
*/
@ExperimentalAudioUiApi
@OptIn(ExperimentalAudioApi::class)
@ExperimentalHorologistAudioUiApi
@OptIn(ExperimentalHorologistAudioApi::class)
public open class VolumeViewModel(
internal val volumeRepository: VolumeRepository,
internal val audioOutputRepository: AudioOutputRepository,
Expand Down Expand Up @@ -71,7 +71,7 @@ public open class VolumeViewModel(
onCleared.invoke()
}

@ExperimentalAudioUiApi
@ExperimentalHorologistAudioUiApi
public object Factory : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST")
override fun <T : ViewModel> create(modelClass: Class<T>, extras: CreationExtras): T {
Expand Down
14 changes: 7 additions & 7 deletions audio/api/current.api
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Signature format: 4.0
package com.google.android.horologist.audio {

@com.google.android.horologist.audio.ExperimentalAudioApi public interface AudioOutput {
@com.google.android.horologist.audio.ExperimentalHorologistAudioApi public interface AudioOutput {
method public String getId();
method public String getName();
property public abstract String id;
Expand Down Expand Up @@ -49,23 +49,23 @@ package com.google.android.horologist.audio {
property public String name;
}

@com.google.android.horologist.audio.ExperimentalAudioApi public interface AudioOutputRepository extends java.lang.AutoCloseable {
@com.google.android.horologist.audio.ExperimentalHorologistAudioApi public interface AudioOutputRepository extends java.lang.AutoCloseable {
method public kotlinx.coroutines.flow.StateFlow<com.google.android.horologist.audio.AudioOutput> getAudioOutput();
method public kotlinx.coroutines.flow.StateFlow<java.util.List<com.google.android.horologist.audio.AudioOutput>> getAvailable();
method public void launchOutputSelection(boolean closeOnConnect);
property public abstract kotlinx.coroutines.flow.StateFlow<com.google.android.horologist.audio.AudioOutput> audioOutput;
property public abstract kotlinx.coroutines.flow.StateFlow<java.util.List<com.google.android.horologist.audio.AudioOutput>> available;
}

@com.google.android.horologist.audio.ExperimentalAudioApi public final class BluetoothSettings {
@com.google.android.horologist.audio.ExperimentalHorologistAudioApi public final class BluetoothSettings {
method public void launchBluetoothSettings(android.content.Context, optional boolean closeOnConnect);
field public static final com.google.android.horologist.audio.BluetoothSettings INSTANCE;
}

@kotlin.RequiresOptIn(message="Horologist Audio is experimental. The API may be changed in the future.") @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention) public @interface ExperimentalAudioApi {
@kotlin.RequiresOptIn(message="Horologist Audio is experimental. The API may be changed in the future.") @kotlin.annotation.Retention(kotlin.annotation.AnnotationRetention) public @interface ExperimentalHorologistAudioApi {
}

@com.google.android.horologist.audio.ExperimentalAudioApi public final class SystemAudioRepository implements com.google.android.horologist.audio.AudioOutputRepository com.google.android.horologist.audio.VolumeRepository {
@com.google.android.horologist.audio.ExperimentalHorologistAudioApi public final class SystemAudioRepository implements com.google.android.horologist.audio.AudioOutputRepository com.google.android.horologist.audio.VolumeRepository {
ctor public SystemAudioRepository(android.content.Context application, androidx.mediarouter.media.MediaRouter mediaRouter, optional androidx.mediarouter.media.MediaRouteSelector selector);
method public void close();
method public void decreaseVolume();
Expand All @@ -87,14 +87,14 @@ package com.google.android.horologist.audio {
public final class SystemAudioRepositoryKt {
}

@com.google.android.horologist.audio.ExperimentalAudioApi public interface VolumeRepository extends java.lang.AutoCloseable {
@com.google.android.horologist.audio.ExperimentalHorologistAudioApi public interface VolumeRepository extends java.lang.AutoCloseable {
method public void decreaseVolume();
method public kotlinx.coroutines.flow.StateFlow<com.google.android.horologist.audio.VolumeState> getVolumeState();
method public void increaseVolume();
property public abstract kotlinx.coroutines.flow.StateFlow<com.google.android.horologist.audio.VolumeState> volumeState;
}

@com.google.android.horologist.audio.ExperimentalAudioApi public final class VolumeState {
@com.google.android.horologist.audio.ExperimentalHorologistAudioApi public final class VolumeState {
ctor public VolumeState(int current, int max);
method public int component1();
method public int component2();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ import kotlinx.coroutines.test.runTest
import kotlinx.coroutines.withContext
import org.junit.Test

@OptIn(ExperimentalCoroutinesApi::class, ExperimentalAudioApi::class)
@OptIn(ExperimentalCoroutinesApi::class, ExperimentalHorologistAudioApi::class)
class SystemAudioRepositoryTest {
@Test
@UiThreadTest
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ package com.google.android.horologist.audio
*
* This interface is intentionally open to allow other targets to be defined in future.
*/
@ExperimentalAudioApi
@ExperimentalHorologistAudioApi
public interface AudioOutput {
/**
* A unique audio output id.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import kotlinx.coroutines.flow.StateFlow
/**
* Audio Output Repository for identifying available audio devices in a simple manner.
*/
@ExperimentalAudioApi
@ExperimentalHorologistAudioApi
public interface AudioOutputRepository : AutoCloseable {
/**
* The current audio output.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import android.provider.Settings
*
* https://developer.android.com/training/wearables/overlays/audio?hl=ca
*/
@ExperimentalAudioApi
@ExperimentalHorologistAudioApi
public object BluetoothSettings {
/**
* Open the bluetooth settings activity and optionally close after connection established.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,4 @@ package com.google.android.horologist.audio
message = "Horologist Audio is experimental. The API may be changed in the future."
)
@Retention(AnnotationRetention.BINARY)
public annotation class ExperimentalAudioApi
public annotation class ExperimentalHorologistAudioApi
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ import kotlinx.coroutines.flow.StateFlow
/**
* Audio Repository for identifying and controlling available audio devices in a simple manner.
*/
@ExperimentalAudioApi
@ExperimentalHorologistAudioApi
public class SystemAudioRepository(
private val application: Context,
private val mediaRouter: MediaRouter,
Expand Down Expand Up @@ -117,31 +117,31 @@ private fun MediaRouter.fixInconsistency() {
}
}

@ExperimentalAudioApi
@ExperimentalHorologistAudioApi
private inline val MediaRouter.volume: VolumeState
get() {
return defaultRoute.volumeState
}

@ExperimentalAudioApi
@ExperimentalHorologistAudioApi
private inline val MediaRouter.output: AudioOutput
get() {
return selectedRoute.device
}

@ExperimentalAudioApi
@ExperimentalHorologistAudioApi
private inline val MediaRouter.devices: List<AudioOutput>
get() {
return routes.map { it.device }
}

@ExperimentalAudioApi
@ExperimentalHorologistAudioApi
private inline val RouteInfo.volumeState: VolumeState
get() {
return VolumeState(current = volume, max = volumeMax)
}

@ExperimentalAudioApi
@ExperimentalHorologistAudioApi
private inline val RouteInfo.device: AudioOutput
get() {
return when {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import kotlinx.coroutines.flow.StateFlow
* A state repository for audio volume, typically the system AudioManager,
* but possibly a remote app in paired situations.
*/
@ExperimentalAudioApi
@ExperimentalHorologistAudioApi
public interface VolumeRepository : AutoCloseable {
/**
* The current volume state, including volume, min, max.
Expand Down
Loading