mirror of
https://github.com/meowarex/rl-mobile.git
synced 2026-10-14 23:43:12 +11:00
RL Pebble <3
This commit is contained in:
1 parent
aaf2d9e99d
commit
1ab876ea59
25 files changed
+2202
-6
No files matched your search
+15
-3
@@ -49,7 +49,15 @@ That script regenerates `extension/radiant/Kawarp.smali` and
|
||||
The Java side under `tools/kawarp-build/{src,stubs}` is not regenerated and keeps its
|
||||
markers.
|
||||
|
||||
## 1. Rolled class references (268)
|
||||
## Gotcha: Pebble integration hooks
|
||||
|
||||
`extension/radiant/PebbleBridge*.smali` is built by `tools/pebble-bridge-build/build.sh`.
|
||||
|
||||
- `integration-pebble-playback.patch` hooks `bk0/e`, TIDAL's 200 ms position poller.
|
||||
It holds `Lbk0/d;`, `ExoPlayer` and `Handler` and reposts with `0xc8`.
|
||||
- `integration-pebble-lyrics.patch` hooks our `RLAPILyricsWorker`, so no markers there.
|
||||
|
||||
## 1. Rolled class references (270)
|
||||
|
||||
| symbol | uses | referenced from |
|
||||
|---|---:|---|
|
||||
@@ -298,6 +306,8 @@ markers.
|
||||
| `Lxf/d$a;` | 2 | `extension/radiant/gestures/queue/SearchPlaylistsResolver.smali` |
|
||||
| `La30/b;` | 1 | `player-favorite-heart.patch` |
|
||||
| `Landroidx/compose/foundation/text/input/a;` | 1 | `player-backdrop-playback.patch` |
|
||||
| `Lbk0/d;` | 1 | `integration-pebble-playback.patch` |
|
||||
| `Lbk0/e;` | 1 | `integration-pebble-playback.patch` |
|
||||
| `Lcom/aspiro/wamp/mycollection/subpages/favoritetracks/n;` | 1 | `gestures/queue/swipe-to-queue.patch` |
|
||||
| `Lcom/aspiro/wamp/nowplaying/view/playqueue/l;` | 1 | `gestures/queue/swipe-to-queue.patch` |
|
||||
| `Lcom/aspiro/wamp/nowplaying/view/playqueue/touchmanagement/a;` | 1 | `gestures/queue/swipe-to-queue.patch` |
|
||||
@@ -676,12 +686,13 @@ The owner name survives R8; only the member name rolls. Match on the descriptor.
|
||||
| `Lz70/a;` | `c` | `:Lcom/aspiro/wamp/model/AvailabilityInteractor;` | 1 |
|
||||
| `Lzf/c;` | `c` | `:Lcom/tidal/android/navigation/NavigationInfo;` | 1 |
|
||||
|
||||
## 3. Rolled patch target classes (64)
|
||||
## 3. Rolled patch target classes (65)
|
||||
|
||||
`--- a/` headers naming an obfuscated class. If these move the hunk cannot even be located.
|
||||
|
||||
| target | hooked by |
|
||||
|---|---|
|
||||
| `bk0/e.smali` | `integration-pebble-playback.patch` |
|
||||
| `cg0/h.smali` | `lyrics-rl-api-isrc.patch` |
|
||||
| `com/aspiro/wamp/mycollection/subpages/albums/myalbums/MyAlbumsView.smali` | `gestures/queue/swipe-to-queue.patch` |
|
||||
| `com/aspiro/wamp/mycollection/subpages/albums/search/SearchAlbumsView.smali` | `gestures/queue/swipe-to-queue.patch` |
|
||||
@@ -747,7 +758,7 @@ The owner name survives R8; only the member name rolls. Match on the descriptor.
|
||||
| `p7/a.smali` | `gestures/queue/swipe-to-queue.patch` |
|
||||
| `v6/e.smali` | `gestures/queue/swipe-to-queue.patch` |
|
||||
|
||||
## 4. Occurrences inside .patch files - not marked inline (220)
|
||||
## 4. Occurrences inside .patch files - not marked inline (221)
|
||||
|
||||
| file | line | kind | symbols |
|
||||
|---|---:|---|---|
|
||||
@@ -883,6 +894,7 @@ The owner name survives R8; only the member name rolls. Match on the descriptor.
|
||||
| `gestures/queue/swipe-to-queue.patch` | 469 | context | `Lcom/tidal/android/feature/appscaffold/ui/recyclerview/b; Lcom/tidal/android/feature/appscaffold/ui/recyclerview/a; a` |
|
||||
| `gestures/queue/swipe-to-queue.patch` | 482 | context | `Lcom/tidal/android/feature/appscaffold/ui/recyclerview/b; Lcom/tidal/android/feature/appscaffold/ui/recyclerview/a; a` |
|
||||
| `gestures/queue/swipe-to-queue.patch` | 500 | context | `Lcom/aspiro/wamp/nowplaying/view/suggestions/o0; Lcom/aspiro/wamp/nowplaying/view/suggestions/l; M` |
|
||||
| `integration-pebble-playback.patch` | 30 | context | `Lbk0/d; Lbk0/e;` |
|
||||
| `integration-waze-playback.patch` | 9 | added | `Lkotlin/jvm/internal/n;` |
|
||||
| `integration-waze-playback.patch` | 17 | added | `Lkotlin/jvm/internal/n;` |
|
||||
| `integration-waze-playback.patch` | 35 | added | `Lkotlin/jvm/internal/n;` |
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
.class Lradiant/PebbleBridge$1;
|
||||
.super Ljava/lang/Object;
|
||||
|
||||
# interfaces
|
||||
.implements Ljava/lang/Runnable;
|
||||
|
||||
|
||||
# annotations
|
||||
.annotation system Ldalvik/annotation/EnclosingMethod;
|
||||
value = Lradiant/PebbleBridge;->onPosition(J)V
|
||||
.end annotation
|
||||
|
||||
.annotation system Ldalvik/annotation/InnerClass;
|
||||
accessFlags = 0x0
|
||||
name = null
|
||||
.end annotation
|
||||
|
||||
|
||||
# instance fields
|
||||
.field final synthetic val$at:J
|
||||
|
||||
.field final synthetic val$position:J
|
||||
|
||||
|
||||
# direct methods
|
||||
.method constructor <init>(JJ)V
|
||||
.registers 5
|
||||
.annotation system Ldalvik/annotation/Signature;
|
||||
value = {
|
||||
"()V"
|
||||
}
|
||||
.end annotation
|
||||
|
||||
iput-wide p1, p0, Lradiant/PebbleBridge$1;->val$position:J
|
||||
|
||||
iput-wide p3, p0, Lradiant/PebbleBridge$1;->val$at:J
|
||||
|
||||
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
|
||||
|
||||
return-void
|
||||
.end method
|
||||
|
||||
|
||||
# virtual methods
|
||||
.method public run()V
|
||||
.registers 5
|
||||
|
||||
iget-wide v0, p0, Lradiant/PebbleBridge$1;->val$position:J
|
||||
|
||||
iget-wide v2, p0, Lradiant/PebbleBridge$1;->val$at:J
|
||||
|
||||
# invokes: Lradiant/PebbleBridge;->onSample(JJ)V
|
||||
invoke-static {v0, v1, v2, v3}, Lradiant/PebbleBridge;->access$000(JJ)V
|
||||
|
||||
return-void
|
||||
.end method
|
||||
@@ -0,0 +1,50 @@
|
||||
.class Lradiant/PebbleBridge$2;
|
||||
.super Ljava/lang/Object;
|
||||
|
||||
# interfaces
|
||||
.implements Ljava/lang/Runnable;
|
||||
|
||||
|
||||
# annotations
|
||||
.annotation system Ldalvik/annotation/EnclosingMethod;
|
||||
value = Lradiant/PebbleBridge;->onLyrics(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
|
||||
.end annotation
|
||||
|
||||
.annotation system Ldalvik/annotation/InnerClass;
|
||||
accessFlags = 0x0
|
||||
name = null
|
||||
.end annotation
|
||||
|
||||
|
||||
# direct methods
|
||||
.method constructor <init>()V
|
||||
.registers 1
|
||||
|
||||
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
|
||||
|
||||
return-void
|
||||
.end method
|
||||
|
||||
|
||||
# virtual methods
|
||||
.method public run()V
|
||||
.registers 2
|
||||
|
||||
# getter for: Lradiant/PebbleBridge;->instance:Lradiant/PebbleBridge;
|
||||
invoke-static {}, Lradiant/PebbleBridge;->access$100()Lradiant/PebbleBridge;
|
||||
|
||||
move-result-object v0
|
||||
|
||||
if-eqz v0, :cond_d
|
||||
|
||||
# getter for: Lradiant/PebbleBridge;->instance:Lradiant/PebbleBridge;
|
||||
invoke-static {}, Lradiant/PebbleBridge;->access$100()Lradiant/PebbleBridge;
|
||||
|
||||
move-result-object v0
|
||||
|
||||
# invokes: Lradiant/PebbleBridge;->sendLyrics()V
|
||||
invoke-static {v0}, Lradiant/PebbleBridge;->access$200(Lradiant/PebbleBridge;)V
|
||||
|
||||
:cond_d
|
||||
return-void
|
||||
.end method
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,30 @@
|
||||
--- a/radiant/RLAPILyricsWorker.smali
|
||||
+++ b/radiant/RLAPILyricsWorker.smali
|
||||
@@ -794,6 +794,12 @@
|
||||
:got_body
|
||||
move-object v11, v3
|
||||
|
||||
+ iget-object v4, p0, Lradiant/RLAPILyricsWorker;->key:Ljava/lang/String;
|
||||
+
|
||||
+ iget-object v5, p0, Lradiant/RLAPILyricsWorker;->title:Ljava/lang/String;
|
||||
+
|
||||
+ invoke-static {v4, v5, v3}, Lradiant/PebbleBridge;->onLyrics(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
|
||||
+
|
||||
invoke-static {v3}, Lradiant/RLAPILyricsWorker;->parseLines(Ljava/lang/String;)Ljava/util/ArrayList;
|
||||
|
||||
move-result-object v3
|
||||
@@ -911,6 +917,14 @@
|
||||
return-void
|
||||
|
||||
:request_failed
|
||||
+ iget-object v0, p0, Lradiant/RLAPILyricsWorker;->key:Ljava/lang/String;
|
||||
+
|
||||
+ iget-object v1, p0, Lradiant/RLAPILyricsWorker;->title:Ljava/lang/String;
|
||||
+
|
||||
+ const/4 v2, 0x0
|
||||
+
|
||||
+ invoke-static {v0, v1, v2}, Lradiant/PebbleBridge;->onLyrics(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
|
||||
+
|
||||
invoke-direct {p0}, Lradiant/RLAPILyricsWorker;->failCurrent()V
|
||||
|
||||
return-void
|
||||
@@ -0,0 +1,31 @@
|
||||
--- a/com/aspiro/wamp/player/MusicService.smali
|
||||
+++ b/com/aspiro/wamp/player/MusicService.smali
|
||||
@@ -1495,6 +1495,8 @@
|
||||
.line 36
|
||||
invoke-virtual {p1, v0}, Landroid/support/v4/media/session/MediaSessionCompat;->setPlaybackState(Landroid/support/v4/media/session/PlaybackStateCompat;)V
|
||||
|
||||
+ invoke-static {p0, p1}, Lradiant/PebbleBridge;->onState(Landroid/content/Context;Landroid/support/v4/media/session/MediaSessionCompat;)V
|
||||
+
|
||||
.line 37
|
||||
.line 38
|
||||
.line 39
|
||||
@@ -2669,6 +2671,8 @@
|
||||
.line 1
|
||||
invoke-super {p0}, Landroidx/media/MediaBrowserServiceCompat;->onDestroy()V
|
||||
|
||||
+ invoke-static {}, Lradiant/PebbleBridge;->onDestroy()V
|
||||
+
|
||||
.line 2
|
||||
.line 3
|
||||
.line 4
|
||||
--- a/bk0/e.smali
|
||||
+++ b/bk0/e.smali
|
||||
@@ -56,6 +56,8 @@
|
||||
.line 6
|
||||
move-result-wide v0
|
||||
|
||||
+ invoke-static {v0, v1}, Lradiant/PebbleBridge;->onPosition(J)V
|
||||
+
|
||||
.line 7
|
||||
iget-object v2, p0, Lbk0/e;->a:Lbk0/d;
|
||||
|
||||
@@ -780,6 +780,30 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "PebbleIntegration",
|
||||
"order": 91,
|
||||
"category": "integration",
|
||||
"fileNames": [
|
||||
"integration-pebble-playback.patch",
|
||||
"integration-pebble-lyrics.patch"
|
||||
],
|
||||
"extensionFiles": [
|
||||
"radiant/PebbleBridge.smali",
|
||||
"radiant/PebbleBridge$1.smali",
|
||||
"radiant/PebbleBridge$2.smali"
|
||||
],
|
||||
"title": "Pebble Watch",
|
||||
"description": "Shows synced lyrics on your Pebble Time 2 when listening, Everything is configured and managed in the Pebble App",
|
||||
"default": false,
|
||||
"requires": [
|
||||
"LyricsRlApi"
|
||||
],
|
||||
"companionApp": {
|
||||
"storeId": "02b779dcf9084fecb0375df1",
|
||||
"storeSource": "https://appstore-api.repebble.com/api"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "DebugMenuUnlock",
|
||||
"order": 100,
|
||||
|
||||
Reference in new issue
Block a user