1ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa/* 2ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa * Copyright (C) 2014 The Android Open Source Project 3ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa * 4ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa * Licensed under the Apache License, Version 2.0 (the "License"); 5ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa * you may not use this file except in compliance with the License. 6ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa * You may obtain a copy of the License at 7ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa * 8ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa * http://www.apache.org/licenses/LICENSE-2.0 9ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa * 10ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa * Unless required by applicable law or agreed to in writing, software 11ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa * distributed under the License is distributed on an "AS IS" BASIS, 12ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa * See the License for the specific language governing permissions and 14ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa * limitations under the License 15ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa */ 16ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa 17ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaapackage android.location; 18ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa 19ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaaimport android.content.Context; 20ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaaimport android.os.RemoteException; 21ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa 22ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa/** 234b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa * A handler class to manage transport listeners for {@link GpsMeasurementsEvent.Listener}. 24ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa * 25ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa * @hide 26ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa */ 274b3e3931270f8e406fc806bc7fa1c2788256687ddestradaaclass GpsMeasurementListenerTransport 284b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa extends LocalListenerHelper<GpsMeasurementsEvent.Listener> { 29ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa private final ILocationManager mLocationManager; 30ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa 31ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa private final IGpsMeasurementsListener mListenerTransport = new ListenerTransport(); 32ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa 33ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa public GpsMeasurementListenerTransport(Context context, ILocationManager locationManager) { 346568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa super(context, "GpsMeasurementListenerTransport"); 35ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa mLocationManager = locationManager; 36ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa } 37ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa 384b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa @Override 394b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa protected boolean registerWithServer() throws RemoteException { 404b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa return mLocationManager.addGpsMeasurementsListener( 414b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa mListenerTransport, 426568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa getContext().getPackageName()); 43ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa } 44ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa 454b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa @Override 464b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa protected void unregisterFromServer() throws RemoteException { 474b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa mLocationManager.removeGpsMeasurementsListener(mListenerTransport); 48ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa } 49ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa 50ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa private class ListenerTransport extends IGpsMeasurementsListener.Stub { 51ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa @Override 524b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa public void onGpsMeasurementsReceived(final GpsMeasurementsEvent event) { 534b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa ListenerOperation<GpsMeasurementsEvent.Listener> operation = 544b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa new ListenerOperation<GpsMeasurementsEvent.Listener>() { 554b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa @Override 564b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa public void execute(GpsMeasurementsEvent.Listener listener) throws RemoteException { 574b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa listener.onGpsMeasurementsReceived(event); 584b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa } 594b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa }; 606568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa foreach(operation); 616568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa } 62ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa 636568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa @Override 646568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa public void onStatusChanged(final int status) { 656568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa ListenerOperation<GpsMeasurementsEvent.Listener> operation = 666568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa new ListenerOperation<GpsMeasurementsEvent.Listener>() { 676568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa @Override 686568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa public void execute(GpsMeasurementsEvent.Listener listener) throws RemoteException { 696568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa listener.onStatusChanged(status); 706568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa } 716568d709e78d6ccaf256b7d0e4a19cdfb26deafbdestradaa }; 724b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa foreach(operation); 73ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa } 74ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa } 75ea8a8a6076f04360de2d25b3e5853cde8026cd5fdestradaa} 76