From b88707592ad09efee43aa554f86a2eb5ebc79658 Mon Sep 17 00:00:00 2001 From: Julian Winkler Date: Thu, 21 Sep 2023 22:49:36 +0200 Subject: [PATCH] add more stubs to make exoplayer not crash --- src/api-impl/android/app/Notification.java | 138 ++++++++++++++++++ .../android/app/NotificationManager.java | 4 + src/api-impl/android/app/PendingIntent.java | 4 + src/api-impl/android/app/Service.java | 4 + .../android/content/pm/PackageManager.java | 2 +- src/api-impl/android/graphics/Canvas.java | 4 + .../android/media/AudioAttributes.java | 15 ++ src/api-impl/android/media/AudioManager.java | 8 + src/api-impl/android/media/AudioTrack.java | 10 ++ src/api-impl/android/media/MediaCodec.java | 9 ++ .../android/media/MediaCodecList.java | 9 ++ .../android/media/MediaDescription.java | 30 ++++ src/api-impl/android/media/MediaMetadata.java | 16 ++ .../media/session/MediaController.java | 13 ++ .../android/media/session/MediaSession.java | 40 +++++ .../android/media/session/PlaybackState.java | 23 +++ src/api-impl/android/os/BaseBundle.java | 42 ++++++ src/api-impl/android/os/Binder.java | 2 + src/api-impl/android/os/Bundle.java | 42 ------ src/api-impl/android/os/IBinder.java | 2 + src/api-impl/android/os/Parcel.java | 18 +++ src/api-impl/android/os/Parcelable.java | 4 +- src/api-impl/android/os/PowerManager.java | 8 +- .../android/os/RemoteCallbackList.java | 10 ++ .../android/view/GestureDetector.java | 4 + src/api-impl/android/view/Surface.java | 4 + src/api-impl/android/view/SurfaceView.java | 8 +- src/api-impl/android/view/View.java | 2 + .../android/view/ViewPropertyAnimator.java | 8 + src/api-impl/android/view/Window.java | 4 + src/api-impl/android/view/WindowManager.java | 2 +- src/api-impl/android/widget/AbsSeekBar.java | 2 + src/api-impl/android/widget/ImageView.java | 2 + src/api-impl/android/widget/ProgressBar.java | 14 ++ src/api-impl/android/widget/RemoteViews.java | 4 + src/api-impl/android/widget/TextView.java | 8 + src/api-impl/meson.build | 10 ++ 37 files changed, 482 insertions(+), 47 deletions(-) create mode 100644 src/api-impl/android/media/MediaCodec.java create mode 100644 src/api-impl/android/media/MediaCodecList.java create mode 100644 src/api-impl/android/media/MediaDescription.java create mode 100644 src/api-impl/android/media/MediaMetadata.java create mode 100644 src/api-impl/android/media/session/MediaController.java create mode 100644 src/api-impl/android/media/session/MediaSession.java create mode 100644 src/api-impl/android/media/session/PlaybackState.java create mode 100644 src/api-impl/android/os/Parcel.java create mode 100644 src/api-impl/android/os/RemoteCallbackList.java create mode 100644 src/api-impl/android/widget/RemoteViews.java diff --git a/src/api-impl/android/app/Notification.java b/src/api-impl/android/app/Notification.java index 3dcce1a4..bef6b121 100644 --- a/src/api-impl/android/app/Notification.java +++ b/src/api-impl/android/app/Notification.java @@ -1,8 +1,146 @@ package android.app; +import android.content.Context; +import android.graphics.Bitmap; import android.media.AudioAttributes; +import android.media.session.MediaSession; +import android.net.Uri; +import android.os.Bundle; +import android.widget.RemoteViews; public class Notification { public static final AudioAttributes AUDIO_ATTRIBUTES_DEFAULT = new AudioAttributes(); + + public long when; + + public int audioStreamType; + + public int icon; + + public PendingIntent deleteIntent; + + public CharSequence tickerText; + + public int iconLevel; + + public RemoteViews contentView; + + public long[] vibrate; + + public int ledARGB; + + public int ledOnMS; + + public int ledOffMS; + + public int flags; + + public int defaults; + + public Uri sound; + + public AudioAttributes audioAttributes; + + public Bundle extras; + + public static class Builder { + public Builder(Context context) {} + + public Builder setWhen(long when) {return this;} + + public Builder setSmallIcon(int icon, int level) {return this;} + + public Builder setContent(RemoteViews contentView) {return this;} + + public Builder setTicker(CharSequence tickerText, RemoteViews contentView) {return this;} + + public Builder setVibrate(long[] pattern) {return this;} + + public Builder setLights(int argb, int onMs, int offMs) {return this;} + + public Builder setOngoing(boolean ongoing) {return this;} + + public Builder setOnlyAlertOnce(boolean onlyAlertOnce) {return this;} + + public Builder setAutoCancel(boolean autoCancel) {return this;} + + public Builder setDefaults(int defaults) {return this;} + + public Builder setContentTitle(CharSequence title) {return this;} + + public Builder setContentText(CharSequence text) {return this;} + + public Builder setContentInfo(CharSequence info) {return this;} + + public Builder setContentIntent(PendingIntent intent) {return this;} + + public Builder setDeleteIntent(PendingIntent intent) {return this;} + + public Builder setFullScreenIntent(PendingIntent intent, boolean highPriority) {return this;} + + public Builder setLargeIcon(Bitmap icon) {return this;} + + public Builder setNumber(int number) {return this;} + + public Builder setProgress(int max, int progress, boolean indeterminate) {return this;} + + public Builder setSubText(CharSequence subText) {return this;} + + public Builder setUsesChronometer(boolean useChronometer) {return this;} + + public Builder setPriority(int priority) {return this;} + + public Builder setShowWhen(boolean showWhen) {return this;} + + public Builder setLocalOnly(boolean localOnly) {return this;} + + public Builder setGroup(String group) {return this;} + + public Builder setSortKey(String sortKey) {return this;} + + public Builder setGroupSummary(boolean isGroupSummary) {return this;} + + public Builder setCategory(String category) {return this;} + + public Builder setColor(int argb) {return this;} + + public Builder setVisibility(int visibility) {return this;} + + public Builder setPublicVersion(Notification notification) {return this;} + + public Builder setSound(Uri sound, AudioAttributes audioAttributes) {return this;} + + public Builder addAction(Action action) {return this;} + + public Builder setStyle(Style style) {return this;} + + public Builder setExtras(Bundle extras) {return this;} + + public Notification build() { + return new Notification(); + } + } + + public static class Action { + public static final class Builder { + + public Builder(int icon, CharSequence title, PendingIntent intent) {} + + public Builder addExtras(Bundle extras) {return this;} + + public Action build() { + return new Action(); + } + } + } + + public static abstract class Style {} + + public static class MediaStyle extends Style { + + public MediaStyle setShowActionsInCompactView(int... viewActions) {return this;} + + public MediaStyle setMediaSession(MediaSession.Token token) {return this;} + } } diff --git a/src/api-impl/android/app/NotificationManager.java b/src/api-impl/android/app/NotificationManager.java index 4d7b107e..add897ae 100644 --- a/src/api-impl/android/app/NotificationManager.java +++ b/src/api-impl/android/app/NotificationManager.java @@ -2,4 +2,8 @@ package android.app; public class NotificationManager { public void cancelAll() {} + + public void notify(String tag, int id, Notification notification) { + System.out.println("notify(" + tag + ", " + id + ", " + notification + ") called"); + } } diff --git a/src/api-impl/android/app/PendingIntent.java b/src/api-impl/android/app/PendingIntent.java index f7748356..f581d92f 100644 --- a/src/api-impl/android/app/PendingIntent.java +++ b/src/api-impl/android/app/PendingIntent.java @@ -15,6 +15,10 @@ public class PendingIntent { public void send(Context context, int code, Intent intent) {} + public static PendingIntent getActivity(Context context, int requestCode, Intent intent, int flags) { + return new PendingIntent(); + } + public class CanceledException extends Exception { } } diff --git a/src/api-impl/android/app/Service.java b/src/api-impl/android/app/Service.java index d1cae88d..2606cc80 100644 --- a/src/api-impl/android/app/Service.java +++ b/src/api-impl/android/app/Service.java @@ -12,4 +12,8 @@ public abstract class Service extends Context { public abstract int onStartCommand(Intent intent, int flags, int startId); + public void startForeground(int id, Notification notification) { + System.out.println("startForeground(" + id + ", " + notification + ") called"); + } + } diff --git a/src/api-impl/android/content/pm/PackageManager.java b/src/api-impl/android/content/pm/PackageManager.java index 8263cd73..5ce506be 100644 --- a/src/api-impl/android/content/pm/PackageManager.java +++ b/src/api-impl/android/content/pm/PackageManager.java @@ -2298,7 +2298,7 @@ public class PackageManager { */ public List queryBroadcastReceivers(Intent intent, int flags) { - return null; + return new ArrayList(); } /** diff --git a/src/api-impl/android/graphics/Canvas.java b/src/api-impl/android/graphics/Canvas.java index dd556132..0d3c029c 100644 --- a/src/api-impl/android/graphics/Canvas.java +++ b/src/api-impl/android/graphics/Canvas.java @@ -379,6 +379,10 @@ public class Canvas { public void drawPath(Path path, Paint paint) {} + public boolean clipPath(Path path) { + return false; + } + private static native void native_drawText(long skia_canvas, CharSequence text, int start, int end, float x, float y, long skia_font, long skia_paint); private static native void native_drawRect(long skia_canvas, float left, float top, float right, float bottom, long skia_paint); private static native void native_drawLine(long skia_canvas, long widget, float startX, float startY, float stopX, float stopY, long skia_paint); diff --git a/src/api-impl/android/media/AudioAttributes.java b/src/api-impl/android/media/AudioAttributes.java index 0819d001..737210c8 100644 --- a/src/api-impl/android/media/AudioAttributes.java +++ b/src/api-impl/android/media/AudioAttributes.java @@ -1,4 +1,19 @@ package android.media; public class AudioAttributes { + + public int getFlags() {return 0;} + + public int getUsage() {return 0;} + + public class Builder { + + public Builder setUsage(int usage) { + return this; + } + + public AudioAttributes build() { + return new AudioAttributes(); + } + } } diff --git a/src/api-impl/android/media/AudioManager.java b/src/api-impl/android/media/AudioManager.java index 6e469e6e..2cb487ad 100644 --- a/src/api-impl/android/media/AudioManager.java +++ b/src/api-impl/android/media/AudioManager.java @@ -32,4 +32,12 @@ public class AudioManager { public int getStreamVolume(int streamType) { return 0; // arbitrary, shouldn't matter too much? } + + public int getStreamMaxVolume(int streamType) { + return 100; + } + + public int requestAudioFocus(OnAudioFocusChangeListener listener, int streamType, int durationHint) { + return /*AUDIOFOCUS_REQUEST_GRANTED*/1; + } } diff --git a/src/api-impl/android/media/AudioTrack.java b/src/api-impl/android/media/AudioTrack.java index f09ba75b..b65ae97c 100644 --- a/src/api-impl/android/media/AudioTrack.java +++ b/src/api-impl/android/media/AudioTrack.java @@ -12,6 +12,7 @@ public class AudioTrack { int audioFormat; int bufferSizeInBytes; int mode; + private int sessionId; // for native code's use long pcm_handle; @@ -45,6 +46,11 @@ public class AudioTrack { native_constructor(streamType, sampleRateInHz, num_channels, audioFormat, bufferSizeInBytes, mode); } + public AudioTrack(int streamType, int sampleRateInHz, int channelConfig, int audioFormat, int bufferSizeInBytes, int mode, int sessionId) { + this(streamType, sampleRateInHz, channelConfig, audioFormat, bufferSizeInBytes, mode); + this.sessionId = sessionId; + } + public static native int getMinBufferSize(int sampleRateInHz, int channelConfig, int audioFormat); public void setPlaybackPositionUpdateListener(OnPlaybackPositionUpdateListener listener) { @@ -79,4 +85,8 @@ public class AudioTrack { } public native int write(byte[] audioData, int offsetInBytes, int sizeInBytes); + + public int getAudioSessionId() { + return sessionId; + } } diff --git a/src/api-impl/android/media/MediaCodec.java b/src/api-impl/android/media/MediaCodec.java new file mode 100644 index 00000000..f96a7410 --- /dev/null +++ b/src/api-impl/android/media/MediaCodec.java @@ -0,0 +1,9 @@ +package android.media; + +public class MediaCodec { + + public static final class CryptoInfo {} + + public static final class BufferInfo {} + +} diff --git a/src/api-impl/android/media/MediaCodecList.java b/src/api-impl/android/media/MediaCodecList.java new file mode 100644 index 00000000..df79b6ad --- /dev/null +++ b/src/api-impl/android/media/MediaCodecList.java @@ -0,0 +1,9 @@ +package android.media; + +public class MediaCodecList { + + public static int getCodecCount() { + return 0; + } + +} diff --git a/src/api-impl/android/media/MediaDescription.java b/src/api-impl/android/media/MediaDescription.java new file mode 100644 index 00000000..08af87fc --- /dev/null +++ b/src/api-impl/android/media/MediaDescription.java @@ -0,0 +1,30 @@ +package android.media; + +import android.graphics.Bitmap; +import android.net.Uri; +import android.os.Bundle; + +public class MediaDescription { + + public static class Builder { + + public Builder setMediaId(String mediaId) {return this;} + + public Builder setTitle(CharSequence title) {return this;} + + public Builder setSubtitle(CharSequence subtitle) {return this;} + + public Builder setDescription(CharSequence description) {return this;} + + public Builder setIconBitmap(Bitmap iconBitmap) {return this;} + + public Builder setIconUri(Uri iconUri) {return this;} + + public Builder setExtras(Bundle extras) {return this;} + + public MediaDescription build() { + return new MediaDescription(); + } + } + +} diff --git a/src/api-impl/android/media/MediaMetadata.java b/src/api-impl/android/media/MediaMetadata.java new file mode 100644 index 00000000..18919b3f --- /dev/null +++ b/src/api-impl/android/media/MediaMetadata.java @@ -0,0 +1,16 @@ +package android.media; + +import android.os.Parcel; +import android.os.Parcelable.Creator; + +public class MediaMetadata { + + public static final Creator CREATOR = new Creator() { + @Override + public MediaMetadata createFromParcel(Parcel source) { + return new MediaMetadata(); + } + }; + + public void writeToParcel(Parcel dest, int flags) {} +} diff --git a/src/api-impl/android/media/session/MediaController.java b/src/api-impl/android/media/session/MediaController.java new file mode 100644 index 00000000..9e5fa67f --- /dev/null +++ b/src/api-impl/android/media/session/MediaController.java @@ -0,0 +1,13 @@ +package android.media.session; + +import android.content.Context; +import android.media.MediaMetadata; + +public class MediaController { + + public MediaController(Context context, MediaSession.Token token) {} + + public MediaMetadata getMetadata() { + return new MediaMetadata(); + } +} diff --git a/src/api-impl/android/media/session/MediaSession.java b/src/api-impl/android/media/session/MediaSession.java new file mode 100644 index 00000000..201818bb --- /dev/null +++ b/src/api-impl/android/media/session/MediaSession.java @@ -0,0 +1,40 @@ +package android.media.session; + +import java.util.List; + +import android.app.PendingIntent; +import android.content.Context; +import android.media.MediaDescription; +import android.media.MediaMetadata; +import android.os.Handler; + +public class MediaSession { + + public static final class Token {} + + public static abstract class Callback {} + + public static class QueueItem { + public QueueItem(MediaDescription description, long id) {} + } + + public MediaSession(Context context, String tag) {} + + public Token getSessionToken() { + return new Token(); + } + + public void setFlags(int flags) {} + + public void setCallback(Callback callback, Handler handler) {} + + public void setMediaButtonReceiver(PendingIntent pendingIntent) {} + + public void setActive(boolean active) {} + + public void setPlaybackState(PlaybackState state) {} + + public void setMetadata(MediaMetadata metadata) {} + + public void setQueue(List queue) {} +} diff --git a/src/api-impl/android/media/session/PlaybackState.java b/src/api-impl/android/media/session/PlaybackState.java new file mode 100644 index 00000000..7f0b426b --- /dev/null +++ b/src/api-impl/android/media/session/PlaybackState.java @@ -0,0 +1,23 @@ +package android.media.session; + +public class PlaybackState { + + public class Builder { + + public Builder setState(int state, long position, float playbackSpeed, long updateTime) {return this;} + + public Builder setBufferedPosition(long bufferedPosition) {return this;} + + public Builder setActions(long actions) {return this;} + + public Builder setErrorMessage(CharSequence errorMessage) {return this;} + + public Builder setActiveQueueItemId(long activeQueueItemId) {return this;} + + public PlaybackState build() { + return new PlaybackState(); + } + + } + +} diff --git a/src/api-impl/android/os/BaseBundle.java b/src/api-impl/android/os/BaseBundle.java index 1ac78f22..5b4c80c5 100644 --- a/src/api-impl/android/os/BaseBundle.java +++ b/src/api-impl/android/os/BaseBundle.java @@ -93,4 +93,46 @@ public class BaseBundle { final String s = getString(key); return (s == null) ? defaultValue : s; } + + /** + * Inserts a long value into the mapping of this Bundle, replacing + * any existing value for the given key. + * + * @param key a String, or null + * @param value a long + */ + public void putLong(String key, long value) { + mMap.put(key, value); + } + + /** + * Inserts an int value into the mapping of this Bundle, replacing + * any existing value for the given key. + * + * @param key a String, or null + * @param value an int, or null + */ + public void putInt(String key, int value) { + mMap.put(key, value); + } + + /** + * Inserts a String value into the mapping of this Bundle, replacing + * any existing value for the given key. Either key or value may be null. + * + * @param key a String, or null + * @param value a String, or null + */ + public void putString(String key, String value) { + mMap.put(key, value); + } + + /** + * Returns the number of mappings contained in this Bundle. + * + * @return the number of mappings as an int. + */ + public int size() { + return mMap.size(); + } } diff --git a/src/api-impl/android/os/Binder.java b/src/api-impl/android/os/Binder.java index 07c46311..e7fa93cb 100644 --- a/src/api-impl/android/os/Binder.java +++ b/src/api-impl/android/os/Binder.java @@ -1,4 +1,6 @@ package android.os; public class Binder extends IBinder { + + public void attachInterface(IInterface owner, String descriptor) {} } diff --git a/src/api-impl/android/os/Bundle.java b/src/api-impl/android/os/Bundle.java index fd7f038c..79a0fcac 100644 --- a/src/api-impl/android/os/Bundle.java +++ b/src/api-impl/android/os/Bundle.java @@ -179,15 +179,6 @@ public final class Bundle extends BaseBundle implements Cloneable { return false; } - /** - * Returns the number of mappings contained in this Bundle. - * - * @return the number of mappings as an int. - */ - public int size() { - return mMap.size(); - } - /** * Removes all elements from the mapping of this Bundle. */ @@ -334,28 +325,6 @@ public final class Bundle extends BaseBundle implements Cloneable { mMap.put(key, value); } - /** - * Inserts an int value into the mapping of this Bundle, replacing - * any existing value for the given key. - * - * @param key a String, or null - * @param value an int, or null - */ - public void putInt(String key, int value) { - mMap.put(key, value); - } - - /** - * Inserts a long value into the mapping of this Bundle, replacing - * any existing value for the given key. - * - * @param key a String, or null - * @param value a long - */ - public void putLong(String key, long value) { - mMap.put(key, value); - } - /** * Inserts a float value into the mapping of this Bundle, replacing * any existing value for the given key. @@ -378,17 +347,6 @@ public final class Bundle extends BaseBundle implements Cloneable { mMap.put(key, value); } - /** - * Inserts a String value into the mapping of this Bundle, replacing - * any existing value for the given key. Either key or value may be null. - * - * @param key a String, or null - * @param value a String, or null - */ - public void putString(String key, String value) { - mMap.put(key, value); - } - /** * Inserts a CharSequence value into the mapping of this Bundle, replacing * any existing value for the given key. Either key or value may be null. diff --git a/src/api-impl/android/os/IBinder.java b/src/api-impl/android/os/IBinder.java index 3851ce0a..460593fc 100644 --- a/src/api-impl/android/os/IBinder.java +++ b/src/api-impl/android/os/IBinder.java @@ -1,4 +1,6 @@ package android.os; public class IBinder { + + public interface DeathRecipient {} } diff --git a/src/api-impl/android/os/Parcel.java b/src/api-impl/android/os/Parcel.java new file mode 100644 index 00000000..1da28ac6 --- /dev/null +++ b/src/api-impl/android/os/Parcel.java @@ -0,0 +1,18 @@ +package android.os; + +public class Parcel { + + public static Parcel obtain() { + return new Parcel(); + } + + public void writeBundle(Bundle bundle) {} + + public Bundle readBundle(ClassLoader loader) { + return new Bundle(); + } + + public void setDataPosition(int position) {} + + public void recycle() {} +} diff --git a/src/api-impl/android/os/Parcelable.java b/src/api-impl/android/os/Parcelable.java index 7f72b4e9..f562f4d8 100644 --- a/src/api-impl/android/os/Parcelable.java +++ b/src/api-impl/android/os/Parcelable.java @@ -1,7 +1,9 @@ package android.os; public interface Parcelable { - public static interface Creator {} + public static interface Creator { + public T createFromParcel(Parcel parcel); + } public static interface ClassLoaderCreator extends Creator {} } diff --git a/src/api-impl/android/os/PowerManager.java b/src/api-impl/android/os/PowerManager.java index 44197c44..0cf1dcab 100644 --- a/src/api-impl/android/os/PowerManager.java +++ b/src/api-impl/android/os/PowerManager.java @@ -1,7 +1,13 @@ package android.os; public final class PowerManager { - public final class WakeLock {} + public final class WakeLock { + public void setReferenceCounted(boolean referenceCounted) {} + + public void acquire() {} + + public void release() {} + } public WakeLock newWakeLock(int levelAndFlags, String tag) { return new WakeLock(); diff --git a/src/api-impl/android/os/RemoteCallbackList.java b/src/api-impl/android/os/RemoteCallbackList.java new file mode 100644 index 00000000..65bc4c86 --- /dev/null +++ b/src/api-impl/android/os/RemoteCallbackList.java @@ -0,0 +1,10 @@ +package android.os; + +public class RemoteCallbackList { + + public int beginBroadcast() { + return 0; + } + + public void finishBroadcast() {} +} diff --git a/src/api-impl/android/view/GestureDetector.java b/src/api-impl/android/view/GestureDetector.java index be8429e1..023c9b56 100644 --- a/src/api-impl/android/view/GestureDetector.java +++ b/src/api-impl/android/view/GestureDetector.java @@ -9,6 +9,10 @@ public class GestureDetector { public GestureDetector(Context context, OnGestureListener listener) {} + public boolean onTouchEvent(MotionEvent event) { + return false; + } + public interface OnGestureListener { } diff --git a/src/api-impl/android/view/Surface.java b/src/api-impl/android/view/Surface.java index 51d0902f..7182d7a9 100644 --- a/src/api-impl/android/view/Surface.java +++ b/src/api-impl/android/view/Surface.java @@ -2,4 +2,8 @@ package android.view; public class Surface { public long widget; + + public boolean isValid() { + return widget != 0; + } } diff --git a/src/api-impl/android/view/SurfaceView.java b/src/api-impl/android/view/SurfaceView.java index 3ace846f..0cf75402 100644 --- a/src/api-impl/android/view/SurfaceView.java +++ b/src/api-impl/android/view/SurfaceView.java @@ -17,6 +17,12 @@ public class SurfaceView extends View { mSurface.widget = this.widget; } + public SurfaceView(Context context, AttributeSet attrs) { + super(context, attrs); + + mSurface.widget = this.widget; + } + private void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { for (SurfaceHolder.Callback c : mCallbacks) { c.surfaceChanged(mSurfaceHolder, format, width, height); @@ -197,7 +203,7 @@ public class SurfaceView extends View { @Override public Rect getSurfaceFrame() { // return mSurfaceFrame; - return null; + return new Rect(0, 0, 400, 400); } }; } diff --git a/src/api-impl/android/view/View.java b/src/api-impl/android/view/View.java index 7b59902c..7438bc51 100644 --- a/src/api-impl/android/view/View.java +++ b/src/api-impl/android/view/View.java @@ -1455,4 +1455,6 @@ public class View extends Object { public long getDrawingTime() { return System.currentTimeMillis(); } + + public void setKeepScreenOn(boolean screenOn) {} } diff --git a/src/api-impl/android/view/ViewPropertyAnimator.java b/src/api-impl/android/view/ViewPropertyAnimator.java index 04ea4022..ceaa9ada 100644 --- a/src/api-impl/android/view/ViewPropertyAnimator.java +++ b/src/api-impl/android/view/ViewPropertyAnimator.java @@ -41,5 +41,13 @@ public class ViewPropertyAnimator { return this; } + public ViewPropertyAnimator scaleX(float scaleX) { + return this; + } + + public ViewPropertyAnimator scaleY(float scaleY) { + return this; + } + public void start() {} } diff --git a/src/api-impl/android/view/Window.java b/src/api-impl/android/view/Window.java index ce9a64f6..a5207241 100644 --- a/src/api-impl/android/view/Window.java +++ b/src/api-impl/android/view/Window.java @@ -78,4 +78,8 @@ public class Window { public void setAttributes(WindowManager.LayoutParams params) {} public void takeSurface(SurfaceHolder.Callback2 callback) {} + + public void setStatusBarColor(int color) {} + + public void setNavigationBarColor(int color) {} } diff --git a/src/api-impl/android/view/WindowManager.java b/src/api-impl/android/view/WindowManager.java index 365bff33..e7a1a7e7 100644 --- a/src/api-impl/android/view/WindowManager.java +++ b/src/api-impl/android/view/WindowManager.java @@ -3,7 +3,7 @@ package android.view; public interface WindowManager { public android.view.Display getDefaultDisplay(); - public class LayoutParams { + public class LayoutParams extends ViewGroup.LayoutParams { public static final int FLAG_KEEP_SCREEN_ON = 0; public float screenBrightness; diff --git a/src/api-impl/android/widget/AbsSeekBar.java b/src/api-impl/android/widget/AbsSeekBar.java index a0851258..39535d14 100644 --- a/src/api-impl/android/widget/AbsSeekBar.java +++ b/src/api-impl/android/widget/AbsSeekBar.java @@ -25,4 +25,6 @@ public abstract class AbsSeekBar extends ProgressBar { }; } + public void setKeyProgressIncrement(int keyProgressIncrement) {} + } diff --git a/src/api-impl/android/widget/ImageView.java b/src/api-impl/android/widget/ImageView.java index aaae4feb..6a4cd49c 100644 --- a/src/api-impl/android/widget/ImageView.java +++ b/src/api-impl/android/widget/ImageView.java @@ -134,4 +134,6 @@ public class ImageView extends View { public final void setColorFilter(int color, PorterDuff.Mode mode) {} public void setImageTintList(ColorStateList tint) {} + + public void setImageAlpha(int alpha) {} } diff --git a/src/api-impl/android/widget/ProgressBar.java b/src/api-impl/android/widget/ProgressBar.java index 5caf32d9..dbf93d92 100644 --- a/src/api-impl/android/widget/ProgressBar.java +++ b/src/api-impl/android/widget/ProgressBar.java @@ -36,4 +36,18 @@ public class ProgressBar extends View { } }; } + + public void setMax(int max) {} + + public int getMax() { + return 100; + } + + public void setProgress(int progress) {} + + public void setSecondaryProgress(int secondaryProgress) {} + + public int getProgress() { + return 0; + } } diff --git a/src/api-impl/android/widget/RemoteViews.java b/src/api-impl/android/widget/RemoteViews.java new file mode 100644 index 00000000..cc9bc538 --- /dev/null +++ b/src/api-impl/android/widget/RemoteViews.java @@ -0,0 +1,4 @@ +package android.widget; + +public class RemoteViews { +} diff --git a/src/api-impl/android/widget/TextView.java b/src/api-impl/android/widget/TextView.java index 3aa56beb..c8fe5014 100644 --- a/src/api-impl/android/widget/TextView.java +++ b/src/api-impl/android/widget/TextView.java @@ -175,6 +175,14 @@ public class TextView extends View { public void setTextIsSelectable(boolean selectable) {} + public void setText(CharSequence text, BufferType type) { + setText(text); + } + + public MovementMethod getMovementMethod() { + return new MovementMethod(); + } + public static interface OnEditorActionListener { } diff --git a/src/api-impl/meson.build b/src/api-impl/meson.build index 63a20eaf..6fceb437 100644 --- a/src/api-impl/meson.build +++ b/src/api-impl/meson.build @@ -200,11 +200,18 @@ hax_jar = jar('hax', [ 'android/media/AudioAttributes.java', 'android/media/AudioManager.java', 'android/media/AudioTrack.java', + 'android/media/MediaCodec.java', + 'android/media/MediaCodecList.java', + 'android/media/MediaDescription.java', + 'android/media/MediaMetadata.java', 'android/media/MediaPlayer.java', 'android/media/MediaRouter.java', 'android/media/SoundPool.java', 'android/media/projection/MediaProjectionManager.java', + 'android/media/session/MediaController.java', + 'android/media/session/MediaSession.java', 'android/media/session/MediaSessionManager.java', + 'android/media/session/PlaybackState.java', 'android/media/tv/TvInputManager.java', 'android/net/ConnectivityManager.java', 'android/net/NetworkInfo.java', @@ -242,11 +249,13 @@ hax_jar = jar('hax', [ 'android/os/MessageQueue.java', 'android/os/Messenger.java', 'android/os/OperationCanceledException.java', + 'android/os/Parcel.java', 'android/os/Parcelable.java', 'android/os/ParcelFileDescriptor.java', 'android/os/PatternMatcher.java', 'android/os/PowerManager.java', 'android/os/Process.java', + 'android/os/RemoteCallbackList.java', 'android/os/RemoteException.java', 'android/os/ResultReceiver.java', 'android/os/StatFs.java', @@ -409,6 +418,7 @@ hax_jar = jar('hax', [ 'android/widget/ProgressBar.java', 'android/widget/RadioButton.java', 'android/widget/RelativeLayout.java', + 'android/widget/RemoteViews.java', 'android/widget/Scroller.java', 'android/widget/ScrollView.java', 'android/widget/SeekBar.java',