Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 331813ce authored by Marvin W.'s avatar Marvin W. 🐿️
Browse files

Update maps, rework MCS

MCS rework related to #23 and #24
parent 61ede985
Loading
Loading
Loading
Loading
Compare f77b09dc to 0890bf45
Original line number Diff line number Diff line
Subproject commit f77b09dc0c3c750f7c99d901b6e5ced5f17d9465
Subproject commit 0890bf454651e90274949af9dca09fbcfbf50d36
+3 −2
Original line number Diff line number Diff line
@@ -67,6 +67,7 @@
    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <uses-permission android:name="com.google.android.c2dm.permission.SEND" />
    <uses-permission android:name="org.microg.gms.STATUS_BROADCAST" />
@@ -174,8 +175,8 @@
            <intent-filter>
                <action android:name="android.intent.action.PACKAGE_REPLACED" />
                <data
                    android:scheme="package"
                    android:path="com.google.android.gms" />
                    android:path="com.google.android.gms"
                    android:scheme="package" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
+44 −31
Original line number Diff line number Diff line
@@ -19,18 +19,24 @@ package com.google.android.gms.maps.internal;
import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.os.Parcel;
import android.os.RemoteException;
import android.util.Log;

import com.google.android.gms.dynamic.IObjectWrapper;
import com.google.android.gms.dynamic.ObjectWrapper;
import com.google.android.gms.maps.GoogleMapOptions;
import org.microg.gms.maps.bitmap.BitmapDescriptorFactoryImpl;
import com.google.android.gms.maps.model.internal.IBitmapDescriptorFactoryDelegate;
import org.microg.gms.maps.camera.CameraUpdateFactoryImpl;

import org.microg.gms.maps.MapFragmentImpl;
import org.microg.gms.maps.MapViewImpl;
import org.microg.gms.maps.ResourcesContainer;
import org.microg.gms.maps.bitmap.BitmapDescriptorFactoryImpl;
import org.microg.gms.maps.camera.CameraUpdateFactoryImpl;

public class CreatorImpl extends ICreator.Stub {
    private static final String TAG = "GmsMapCreator";

    @Override
    public void init(IObjectWrapper resources) throws RemoteException {
        initV2(resources, 0);
@@ -60,4 +66,11 @@ public class CreatorImpl extends ICreator.Stub {
    public void initV2(IObjectWrapper resources, int flags) throws RemoteException {
        ResourcesContainer.set((Resources) ObjectWrapper.unwrap(resources));
    }

    @Override
    public boolean onTransact(int code, Parcel data, Parcel reply, int flags) throws RemoteException {
        if (super.onTransact(code, data, reply, flags)) return true;
        Log.d(TAG, "onTransact [unknown]: " + code + ", " + data + ", " + flags);
        return false;
    }
}
+9 −0
Original line number Diff line number Diff line
@@ -26,4 +26,13 @@ public class Constants {
    public static final int MCS_DATA_MESSAGE_STANZA_TAG = 8;

    public static final int MCS_VERSION_CODE = 41;

    public static final int MSG_INPUT = 10;
    public static final int MSG_INPUT_ERROR = 11;
    public static final int MSG_OUTPUT = 20;
    public static final int MSG_OUTPUT_ERROR = 21;
    public static final int MSG_OUTPUT_READY = 22;
    public static final int MSG_TEARDOWN = 30;
    public static final int MSG_CONNECT = 40;
    public static final int MSG_HEARTBEAT = 41;
}
+39 −6
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package org.microg.gms.gcm;

import android.os.Handler;
import android.util.Log;

import com.squareup.wire.Message;
@@ -39,8 +40,10 @@ import static org.microg.gms.gcm.Constants.MCS_HEARTBEAT_PING_TAG;
import static org.microg.gms.gcm.Constants.MCS_IQ_STANZA_TAG;
import static org.microg.gms.gcm.Constants.MCS_LOGIN_REQUEST_TAG;
import static org.microg.gms.gcm.Constants.MCS_LOGIN_RESPONSE_TAG;
import static org.microg.gms.gcm.Constants.MSG_INPUT;
import static org.microg.gms.gcm.Constants.MSG_INPUT_ERROR;

public class McsInputStream {
public class McsInputStream extends Thread {
    private static final String TAG = "GmsGcmMcsInput";

    private final InputStream is;
@@ -48,14 +51,41 @@ public class McsInputStream {
    private int version = -1;
    private int lastStreamIdReported = -1;
    private int streamId = 0;
    private long lastMsgTime = 0;
    private Handler mainHandler;

    public McsInputStream(InputStream is) {
        this(is, false);
    public McsInputStream(InputStream is, Handler mainHandler) {
        this(is, mainHandler, false);
    }

    public McsInputStream(InputStream is, boolean initialized) {
    public McsInputStream(InputStream is, Handler mainHandler, boolean initialized) {
        this.is = is;
        this.mainHandler = mainHandler;
        this.initialized = initialized;
        setName("McsInputStream");
    }

    @Override
    public void run() {
        try {
            while (!Thread.currentThread().isInterrupted()) {
                Message message = read();
                if (message != null) {
                    lastMsgTime = System.currentTimeMillis();
                    mainHandler.dispatchMessage(mainHandler.obtainMessage(MSG_INPUT, message));
                }
            }
        } catch (IOException e) {
            try {
                is.close();
            } catch (IOException ignored) {
            }
            mainHandler.dispatchMessage(mainHandler.obtainMessage(MSG_INPUT_ERROR, e));
        }
    }

    public void close() {
        interrupt();
    }

    public int getStreamId() {
@@ -63,6 +93,10 @@ public class McsInputStream {
        return streamId;
    }

    public long getLastMsgTime() {
        return lastMsgTime;
    }

    public boolean newStreamIdAvailable() {
        return lastStreamIdReported != streamId;
    }
@@ -88,14 +122,12 @@ public class McsInputStream {
        ensureVersionRead();
        int mcsTag = is.read();
        int mcsSize = readVarint();
        Log.d(TAG, "Reading from MCS tag=" + mcsTag + " size=" + mcsSize);
        byte[] bytes = new byte[mcsSize];
        int len = 0;
        while (len < mcsSize) {
            len += is.read(bytes, len, mcsSize - len);
        }
        Message read = read(mcsTag, bytes, len);
        Log.d(TAG, "Read from MCS: " + read);
        streamId++;
        return read;
    }
@@ -118,6 +150,7 @@ public class McsInputStream {
            case MCS_DATA_MESSAGE_STANZA_TAG:
                return wire.parseFrom(bytes, 0, len, DataMessageStanza.class);
            default:
                Log.w(TAG, "Unknown tag: " + mcsTag);
                return null;
        }
    }
Loading