14b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa/*
24b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa * Copyright (C) 2014 The Android Open Source Project
34b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa *
44b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa * Licensed under the Apache License, Version 2.0 (the "License");
54b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa * you may not use this file except in compliance with the License.
64b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa * You may obtain a copy of the License at
74b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa *
84b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa *      http://www.apache.org/licenses/LICENSE-2.0
94b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa *
104b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa * Unless required by applicable law or agreed to in writing, software
114b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa * distributed under the License is distributed on an "AS IS" BASIS,
124b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
134b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa * See the License for the specific language governing permissions and
144b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa * limitations under the License
154b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa */
164b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa
174b3e3931270f8e406fc806bc7fa1c2788256687ddestradaapackage android.location;
184b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa
194b3e3931270f8e406fc806bc7fa1c2788256687ddestradaaimport android.content.Context;
204b3e3931270f8e406fc806bc7fa1c2788256687ddestradaaimport android.os.RemoteException;
214b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa
224b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa/**
23e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang * A handler class to manage transport callback for {@link GnssNavigationMessage.Callback}.
244b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa *
254b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa * @hide
264b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa */
27818aa2c2c46addae934fb6cd42f889affc9ef747Lifu Tangclass GnssNavigationMessageCallbackTransport
28e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang        extends LocalListenerHelper<GnssNavigationMessage.Callback> {
294b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa    private final ILocationManager mLocationManager;
304b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa
31818aa2c2c46addae934fb6cd42f889affc9ef747Lifu Tang    private final IGnssNavigationMessageListener mListenerTransport = new ListenerTransport();
324b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa
33818aa2c2c46addae934fb6cd42f889affc9ef747Lifu Tang    public GnssNavigationMessageCallbackTransport(
344b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa            Context context,
354b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa            ILocationManager locationManager) {
36818aa2c2c46addae934fb6cd42f889affc9ef747Lifu Tang        super(context, "GnssNavigationMessageCallbackTransport");
374b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa        mLocationManager = locationManager;
384b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa    }
394b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa
404b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa    @Override
414b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa    protected boolean registerWithServer() throws RemoteException {
42818aa2c2c46addae934fb6cd42f889affc9ef747Lifu Tang        return mLocationManager.addGnssNavigationMessageListener(
434b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa                mListenerTransport,
446568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa                getContext().getPackageName());
454b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa    }
464b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa
474b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa    @Override
484b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa    protected void unregisterFromServer() throws RemoteException {
49818aa2c2c46addae934fb6cd42f889affc9ef747Lifu Tang        mLocationManager.removeGnssNavigationMessageListener(mListenerTransport);
504b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa    }
514b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa
52818aa2c2c46addae934fb6cd42f889affc9ef747Lifu Tang    private class ListenerTransport extends IGnssNavigationMessageListener.Stub {
534b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa        @Override
54e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang        public void onGnssNavigationMessageReceived(final GnssNavigationMessage event) {
55e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang            ListenerOperation<GnssNavigationMessage.Callback> operation =
56e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang                    new ListenerOperation<GnssNavigationMessage.Callback>() {
574b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa                @Override
58e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang                public void execute(GnssNavigationMessage.Callback callback)
594b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa                        throws RemoteException {
60818aa2c2c46addae934fb6cd42f889affc9ef747Lifu Tang                    callback.onGnssNavigationMessageReceived(event);
614b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa                }
624b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa            };
636568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa            foreach(operation);
646568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa        }
654b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa
666568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa        @Override
676568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa        public void onStatusChanged(final int status) {
68e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang            ListenerOperation<GnssNavigationMessage.Callback> operation =
69e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang                    new ListenerOperation<GnssNavigationMessage.Callback>() {
706568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa                @Override
71e8abe8e5ad830bd130b258c6801d75f6542200b5Lifu Tang                public void execute(GnssNavigationMessage.Callback callback)
726568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa                        throws RemoteException {
73a8b7bb5a50d8ad197c6f32eb308919c11b52ce74Lifu Tang                    callback.onStatusChanged(status);
746568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa                }
756568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa            };
764b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa            foreach(operation);
774b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa        }
784b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa    }
794b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa}
80