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