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