Skip to content

Commit 1461877

Browse files
fix: Java wire format codegen removes AIDL header/footer, restore GPS README example
Java-defined parcelables (Location, LastLocationRequest, etc.) use direct field serialization without the AIDL header/footer framing. The codegen was incorrectly wrapping these in WriteParcelableHeader/ReadParcelableHeader, causing "Parcel data not fully consumed" errors on real devices. Fix writeJavaWireMarshalParcel and writeJavaWireUnmarshalParcel to write/read fields directly. Also handle the unused _err variable for parcelables with only opaque fields. Restore the GPS/Location Quick Start example as the primary README example, using location.FusedProvider and showing lat/lon/alt. Verified working on a Pixel device (SDK 36) with mock location provider.
1 parent 92fa444 commit 1461877

936 files changed

Lines changed: 957 additions & 36918 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 78 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,40 @@ Includes a complete AIDL compiler that parses Android Interface Definition Langu
2525
**Go library**`go get github.com/xaionaro-go/binder` and call any service:
2626

2727
```go
28-
driver, _ := kernelbinder.Open(ctx, binder.WithMapSize(128*1024))
29-
defer driver.Close(ctx)
30-
transport, _ := versionaware.NewTransport(ctx, driver, 0)
31-
sm := servicemanager.New(transport)
28+
package main
3229

30+
import (
31+
"context"
32+
"fmt"
33+
"log"
34+
35+
"github.com/xaionaro-go/binder/android/location"
36+
"github.com/xaionaro-go/binder/binder"
37+
"github.com/xaionaro-go/binder/binder/versionaware"
38+
"github.com/xaionaro-go/binder/kernelbinder"
39+
"github.com/xaionaro-go/binder/servicemanager"
40+
)
41+
42+
func main() {
43+
ctx := context.Background()
44+
driver, _ := kernelbinder.Open(ctx, binder.WithMapSize(128*1024))
45+
defer driver.Close(ctx)
46+
transport, _ := versionaware.NewTransport(ctx, driver, 0)
47+
sm := servicemanager.New(transport)
48+
49+
lm, _ := location.GetLocationManager(ctx, sm)
50+
loc, err := lm.GetLastLocation(ctx, location.FusedProvider, location.LastLocationRequest{}, "com.android.shell")
51+
if err != nil {
52+
log.Fatal(err)
53+
}
54+
fmt.Printf("Lat: %f, Lon: %f, Alt: %f\n",
55+
loc.LatitudeDegrees, loc.LongitudeDegrees, loc.AltitudeMeters)
56+
}
57+
```
58+
59+
Or query power state:
60+
61+
```go
3362
power, _ := os.GetPowerManager(ctx, sm)
3463
interactive, _ := power.IsInteractive(ctx)
3564
fmt.Printf("Screen on: %v\n", interactive)
@@ -105,6 +134,51 @@ All three libraries talk to the same Android system services, but through differ
105134

106135
<!-- BEGIN GENERATED USAGE_EXAMPLES -->
107136

137+
### Get GPS Location
138+
139+
```go
140+
import (
141+
"context"
142+
"fmt"
143+
"log"
144+
145+
"github.com/xaionaro-go/binder/android/location"
146+
"github.com/xaionaro-go/binder/binder"
147+
"github.com/xaionaro-go/binder/binder/versionaware"
148+
"github.com/xaionaro-go/binder/kernelbinder"
149+
"github.com/xaionaro-go/binder/servicemanager"
150+
)
151+
152+
ctx := context.Background()
153+
154+
driver, err := kernelbinder.Open(ctx, binder.WithMapSize(128*1024))
155+
if err != nil {
156+
log.Fatal(err)
157+
}
158+
defer driver.Close(ctx)
159+
160+
transport, err := versionaware.NewTransport(ctx, driver, 0)
161+
if err != nil {
162+
log.Fatal(err)
163+
}
164+
sm := servicemanager.New(transport)
165+
166+
lm, err := location.GetLocationManager(ctx, sm)
167+
if err != nil {
168+
log.Fatal(err)
169+
}
170+
171+
loc, err := lm.GetLastLocation(ctx, location.FusedProvider, location.LastLocationRequest{}, "com.android.shell")
172+
if err != nil {
173+
log.Fatal(err)
174+
}
175+
176+
fmt.Printf("Lat: %f, Lon: %f, Alt: %f\n",
177+
loc.LatitudeDegrees, loc.LongitudeDegrees, loc.AltitudeMeters)
178+
fmt.Printf("Speed: %f m/s, Bearing: %f°\n",
179+
loc.SpeedMetersPerSecond, loc.BearingDegrees)
180+
```
181+
108182
### Check Power State
109183

110184
```go

android/accessibilityservice/accessibilitygestureevent.go

Lines changed: 1 addition & 24 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

android/accessibilityservice/accessibilityserviceinfo.go

Lines changed: 1 addition & 124 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)