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/**
234b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa * A handler class to manage transport listeners for {@link GpsNavigationMessageEvent.Listener}.
244b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa *
254b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa * @hide
264b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa */
274b3e3931270f8e406fc806bc7fa1c2788256687ddestradaaclass GpsNavigationMessageListenerTransport
284b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa        extends LocalListenerHelper<GpsNavigationMessageEvent.Listener> {
294b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa    private final ILocationManager mLocationManager;
304b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa
314b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa    private final IGpsNavigationMessageListener mListenerTransport = new ListenerTransport();
324b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa
334b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa    public GpsNavigationMessageListenerTransport(
344b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa            Context context,
354b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa            ILocationManager locationManager) {
366568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa        super(context, "GpsNavigationMessageListenerTransport");
374b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa        mLocationManager = locationManager;
384b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa    }
394b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa
404b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa    @Override
414b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa    protected boolean registerWithServer() throws RemoteException {
424b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa        return mLocationManager.addGpsNavigationMessageListener(
434b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa                mListenerTransport,
446568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa                getContext().getPackageName());
454b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa    }
464b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa
474b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa    @Override
484b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa    protected void unregisterFromServer() throws RemoteException {
494b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa        mLocationManager.removeGpsNavigationMessageListener(mListenerTransport);
504b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa    }
514b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa
524b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa    private class ListenerTransport extends IGpsNavigationMessageListener.Stub {
534b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa        @Override
544b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa        public void onGpsNavigationMessageReceived(final GpsNavigationMessageEvent event) {
554b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa            ListenerOperation<GpsNavigationMessageEvent.Listener> operation =
564b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa                    new ListenerOperation<GpsNavigationMessageEvent.Listener>() {
574b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa                @Override
584b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa                public void execute(GpsNavigationMessageEvent.Listener listener)
594b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa                        throws RemoteException {
604b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa                    listener.onGpsNavigationMessageReceived(event);
614b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa                }
624b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa            };
636568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa            foreach(operation);
646568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa        }
654b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa
666568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa        @Override
676568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa        public void onStatusChanged(final int status) {
686568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa            ListenerOperation<GpsNavigationMessageEvent.Listener> operation =
696568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa                    new ListenerOperation<GpsNavigationMessageEvent.Listener>() {
706568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa                @Override
716568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa                public void execute(GpsNavigationMessageEvent.Listener listener)
726568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa                        throws RemoteException {
736568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa                    listener.onStatusChanged(status);
746568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa                }
756568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa            };
764b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa            foreach(operation);
774b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa        }
784b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa    }
794b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa}
80