From ffb2855a052bd06d9e6e081f20ec66f851e6b745 Mon Sep 17 00:00:00 2001 From: Mis012 Date: Tue, 25 Jul 2023 14:29:43 +0200 Subject: [PATCH] api-impl: add misc stuff needed by Teeter note that Teeter still needs more stuff before it will work --- src/api-impl/android/app/Activity.java | 4 + src/api-impl/android/app/AlertDialog.java | 2 + src/api-impl/android/content/Context.java | 3 + .../android/content/pm/PackageItemInfo.java | 1 + src/api-impl/android/graphics/Bitmap.java | 4 +- src/api-impl/android/graphics/Canvas.java | 2 + src/api-impl/android/graphics/Point.java | 96 +++++++++++++++++++ .../graphics/drawable/AnimationDrawable.java | 5 + .../graphics/drawable/BitmapDrawable.java | 8 ++ .../android/graphics/drawable/Drawable.java | 5 + .../android/hardware/input/InputManager.java | 14 +++ src/api-impl/android/media/MediaPlayer.java | 4 + src/api-impl/android/util/DisplayMetrics.java | 6 +- .../android/view/animation/Animation.java | 5 + .../view/animation/AnimationUtils.java | 7 ++ .../com/htc/util/htcresutil/resutil.java | 10 ++ src/api-impl/meson.build | 8 ++ 17 files changed, 181 insertions(+), 3 deletions(-) create mode 100644 src/api-impl/android/graphics/Point.java create mode 100644 src/api-impl/android/graphics/drawable/AnimationDrawable.java create mode 100644 src/api-impl/android/graphics/drawable/BitmapDrawable.java create mode 100644 src/api-impl/android/graphics/drawable/Drawable.java create mode 100644 src/api-impl/android/hardware/input/InputManager.java create mode 100644 src/api-impl/android/view/animation/Animation.java create mode 100644 src/api-impl/android/view/animation/AnimationUtils.java create mode 100644 src/api-impl/com/htc/util/htcresutil/resutil.java diff --git a/src/api-impl/android/app/Activity.java b/src/api-impl/android/app/Activity.java index ddc48ca9..9837c592 100644 --- a/src/api-impl/android/app/Activity.java +++ b/src/api-impl/android/app/Activity.java @@ -233,4 +233,8 @@ public class Activity extends Context { System.out.println("startActivityForResult(" + intent + ", " + requestCode + ") called, but we don't currently support multiple activities"); onActivityResult(requestCode, 0 /*RESULT_CANCELED*/, new Intent()); // RESULT_CANCELED is the only pre-defined return value, so hopefully it works out for us } + + public final void showDialog(int id) { + System.out.println("Activity.showDialog(" + id + ") called"); + } } diff --git a/src/api-impl/android/app/AlertDialog.java b/src/api-impl/android/app/AlertDialog.java index 08da5211..e4b01d32 100644 --- a/src/api-impl/android/app/AlertDialog.java +++ b/src/api-impl/android/app/AlertDialog.java @@ -11,10 +11,12 @@ public class AlertDialog extends Dialog { } public AlertDialog.Builder setPositiveButton(int textId, DialogInterface.OnClickListener listener) { + System.out.println("AlertDialog.Builder setPositiveButton called with textId: '" + textId + "'"); return this; } public AlertDialog.Builder setPositiveButton(CharSequence text, DialogInterface.OnClickListener listener) { + System.out.println("AlertDialog.Builder setPositiveButton called with text: '" + text + "'"); return this; } diff --git a/src/api-impl/android/content/Context.java b/src/api-impl/android/content/Context.java index cf09547b..d5b690d4 100644 --- a/src/api-impl/android/content/Context.java +++ b/src/api-impl/android/content/Context.java @@ -16,6 +16,7 @@ import android.content.res.AssetManager; import android.content.res.Configuration; import android.content.res.Resources; import android.content.res.TypedArray; +import android.hardware.input.InputManager; import android.hardware.SensorManager; import android.hardware.display.DisplayManager; import android.hardware.usb.UsbManager; @@ -128,6 +129,8 @@ public class Context extends Object { return new NotificationManager(); case "alarm": return new AlarmManager(); + case "input": + return new InputManager(); default: System.out.println("!!!!!!! getSystemService: case >" + name + "< is not implemented yet"); return null; diff --git a/src/api-impl/android/content/pm/PackageItemInfo.java b/src/api-impl/android/content/pm/PackageItemInfo.java index 41628191..3f6bb2a9 100644 --- a/src/api-impl/android/content/pm/PackageItemInfo.java +++ b/src/api-impl/android/content/pm/PackageItemInfo.java @@ -79,6 +79,7 @@ public class PackageItemInfo { public Bundle metaData; public PackageItemInfo() { + metaData = new Bundle(); } public PackageItemInfo(PackageItemInfo orig) { diff --git a/src/api-impl/android/graphics/Bitmap.java b/src/api-impl/android/graphics/Bitmap.java index b212e71d..2c23f374 100644 --- a/src/api-impl/android/graphics/Bitmap.java +++ b/src/api-impl/android/graphics/Bitmap.java @@ -1328,7 +1328,9 @@ public final class Bitmap { public void eraseColor(int c) { checkRecycled("Can't erase a recycled bitmap"); if (!isMutable()) { - throw new IllegalStateException("cannot erase immutable bitmaps"); +// throw new IllegalStateException("cannot erase immutable bitmaps"); + System.out.println("cannot erase immutable bitmaps"); + return; } nativeErase(mNativeBitmap, c); } diff --git a/src/api-impl/android/graphics/Canvas.java b/src/api-impl/android/graphics/Canvas.java index 18f8e00e..9c9071ec 100644 --- a/src/api-impl/android/graphics/Canvas.java +++ b/src/api-impl/android/graphics/Canvas.java @@ -6,6 +6,8 @@ public class Canvas { public Canvas() {} + public Canvas(Bitmap bmp) {} + public Canvas(long cairo_context, long widget) { this.cairo_context = cairo_context; this.widget = widget; diff --git a/src/api-impl/android/graphics/Point.java b/src/api-impl/android/graphics/Point.java new file mode 100644 index 00000000..9b5dcde6 --- /dev/null +++ b/src/api-impl/android/graphics/Point.java @@ -0,0 +1,96 @@ +/* + * Copyright (C) 2007 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.graphics; + +import android.os.Parcelable; + + +/** + * Point holds two integer coordinates + */ +public class Point implements Parcelable { + public int x; + public int y; + + public Point() {} + + public Point(int x, int y) { + this.x = x; + this.y = y; + } + + public Point(Point src) { + this.x = src.x; + this.y = src.y; + } + + /** + * Set the point's x and y coordinates + */ + public void set(int x, int y) { + this.x = x; + this.y = y; + } + + /** + * Negate the point's coordinates + */ + public final void negate() { + x = -x; + y = -y; + } + + /** + * Offset the point's coordinates by dx, dy + */ + public final void offset(int dx, int dy) { + x += dx; + y += dy; + } + + /** + * Returns true if the point's coordinates equal (x,y) + */ + public final boolean equals(int x, int y) { + return this.x == x && this.y == y; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + Point point = (Point) o; + + if (x != point.x) return false; + if (y != point.y) return false; + + return true; + } + + @Override + public int hashCode() { + int result = x; + result = 31 * result + y; + return result; + } + + @Override + public String toString() { + return "Point(" + x + ", " + y + ")"; + } +} diff --git a/src/api-impl/android/graphics/drawable/AnimationDrawable.java b/src/api-impl/android/graphics/drawable/AnimationDrawable.java new file mode 100644 index 00000000..88b1d68e --- /dev/null +++ b/src/api-impl/android/graphics/drawable/AnimationDrawable.java @@ -0,0 +1,5 @@ +package android.graphics.drawable; + +public class AnimationDrawable { + public void addFrame(Drawable drawable, int dummy) {} +} diff --git a/src/api-impl/android/graphics/drawable/BitmapDrawable.java b/src/api-impl/android/graphics/drawable/BitmapDrawable.java new file mode 100644 index 00000000..38c5744c --- /dev/null +++ b/src/api-impl/android/graphics/drawable/BitmapDrawable.java @@ -0,0 +1,8 @@ +package android.graphics.drawable; + +import android.content.res.Resources; +import android.graphics.Bitmap; + +public class BitmapDrawable extends Drawable { + public BitmapDrawable(Resources res, Bitmap bitmap) {} +} diff --git a/src/api-impl/android/graphics/drawable/Drawable.java b/src/api-impl/android/graphics/drawable/Drawable.java new file mode 100644 index 00000000..508c8431 --- /dev/null +++ b/src/api-impl/android/graphics/drawable/Drawable.java @@ -0,0 +1,5 @@ +package android.graphics.drawable; + +public class Drawable { + +} diff --git a/src/api-impl/android/hardware/input/InputManager.java b/src/api-impl/android/hardware/input/InputManager.java new file mode 100644 index 00000000..70e5f397 --- /dev/null +++ b/src/api-impl/android/hardware/input/InputManager.java @@ -0,0 +1,14 @@ +package android.hardware.input; + +import android.os.Handler; + +public class InputManager { + public static interface InputDeviceListener { + abstract void onInputDeviceAdded(int deviceId); + abstract void onInputDeviceChanged(int deviceId); + abstract void onInputDeviceRemoved(int deviceId); + } + + public void registerInputDeviceListener(InputManager.InputDeviceListener listener, Handler handler) { + } +} diff --git a/src/api-impl/android/media/MediaPlayer.java b/src/api-impl/android/media/MediaPlayer.java index 60129786..fd654bf2 100644 --- a/src/api-impl/android/media/MediaPlayer.java +++ b/src/api-impl/android/media/MediaPlayer.java @@ -1,5 +1,7 @@ package android.media; +import android.content.Context; + public class MediaPlayer { public interface OnCompletionListener { } @@ -17,4 +19,6 @@ public class MediaPlayer { } public interface MediaPlayerControl { } + + public static MediaPlayer create(Context context, int dummy) { return new MediaPlayer(); } } diff --git a/src/api-impl/android/util/DisplayMetrics.java b/src/api-impl/android/util/DisplayMetrics.java index 8c21ed8d..f9f1aba7 100644 --- a/src/api-impl/android/util/DisplayMetrics.java +++ b/src/api-impl/android/util/DisplayMetrics.java @@ -16,6 +16,8 @@ package android.util; +import android.view.Display; + /** * A structure describing general information about a display, such as its * size, density, and font scaling. @@ -219,8 +221,8 @@ public class DisplayMetrics { } public void setToDefaults() { - widthPixels = 0; - heightPixels = 0; + widthPixels = Display.window_width; + heightPixels = Display.window_height; density = DENSITY_DEVICE / (float)DENSITY_DEFAULT; densityDpi = DENSITY_DEVICE; scaledDensity = density; diff --git a/src/api-impl/android/view/animation/Animation.java b/src/api-impl/android/view/animation/Animation.java new file mode 100644 index 00000000..2376d9aa --- /dev/null +++ b/src/api-impl/android/view/animation/Animation.java @@ -0,0 +1,5 @@ +package android.view.animation; + +public class Animation { + +} diff --git a/src/api-impl/android/view/animation/AnimationUtils.java b/src/api-impl/android/view/animation/AnimationUtils.java new file mode 100644 index 00000000..15ba6b6a --- /dev/null +++ b/src/api-impl/android/view/animation/AnimationUtils.java @@ -0,0 +1,7 @@ +package android.view.animation; + +import android.content.Context; + +public class AnimationUtils { + public static Animation loadAnimation(Context context, int dummy) { return new Animation(); } +} diff --git a/src/api-impl/com/htc/util/htcresutil/resutil.java b/src/api-impl/com/htc/util/htcresutil/resutil.java new file mode 100644 index 00000000..5803588f --- /dev/null +++ b/src/api-impl/com/htc/util/htcresutil/resutil.java @@ -0,0 +1,10 @@ +package com.htc.util.htcresutil; + +/* + * This file only exists so that HTC-exclusive apps think they are running on an HTC device. + * At least teeter checks for this class in order to determine if it should refuse to launch. + */ + +public class resutil { + +} diff --git a/src/api-impl/meson.build b/src/api-impl/meson.build index 43b7effe..73f7493d 100644 --- a/src/api-impl/meson.build +++ b/src/api-impl/meson.build @@ -85,6 +85,7 @@ hax_jar = jar('hax', [ 'android/graphics/Matrix.java', 'android/graphics/Paint.java', 'android/graphics/Path.java', + 'android/graphics/Point.java', 'android/graphics/PorterDuff.java', 'android/graphics/PorterDuffXfermode.java', 'android/graphics/RectF.java', @@ -92,7 +93,11 @@ hax_jar = jar('hax', [ 'android/graphics/Region.java', 'android/graphics/Typeface.java', 'android/graphics/Xfermode.java', + 'android/graphics/drawable/AnimationDrawable.java', + 'android/graphics/drawable/BitmapDrawable.java', + 'android/graphics/drawable/Drawable.java', 'android/hardware/display/DisplayManager.java', + 'android/hardware/input/InputManager.java', 'android/hardware/SensorEventListener.java', 'android/hardware/Sensor.java', 'android/hardware/SensorManager.java', @@ -208,6 +213,8 @@ hax_jar = jar('hax', [ 'android/view/Window.java', 'android/view/WindowManagerImpl.java', 'android/view/WindowManager.java', + 'android/view/animation/Animation.java', + 'android/view/animation/AnimationUtils.java', 'android/webkit/DownloadListener.java', 'android/webkit/WebSettings.java', 'android/webkit/WebView.java', @@ -231,6 +238,7 @@ hax_jar = jar('hax', [ 'com/google/android/vending/licensing/LicenseCheckerCallback.java', 'com/google/android/vending/licensing/LicenseChecker.java', 'com/google/android/vending/licensing/Policy.java', + 'com/htc/util/htcresutil/resutil.java', 'javax/microedition/khronos/egl/EGL10.java', 'javax/microedition/khronos/egl/EGL11.java', 'javax/microedition/khronos/egl/EGLConfig.java',