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.annotation.NonNull; 204b3e3931270f8e406fc806bc7fa1c2788256687ddestradaaimport android.os.Parcel; 214b3e3931270f8e406fc806bc7fa1c2788256687ddestradaaimport android.os.Parcelable; 224b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa 234b3e3931270f8e406fc806bc7fa1c2788256687ddestradaaimport java.security.InvalidParameterException; 244b3e3931270f8e406fc806bc7fa1c2788256687ddestradaaimport java.util.Arrays; 254b3e3931270f8e406fc806bc7fa1c2788256687ddestradaaimport java.util.Collection; 264b3e3931270f8e406fc806bc7fa1c2788256687ddestradaaimport java.util.Collections; 274b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa 284b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa/** 294b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa * A class implementing a container for data associated with a navigation message event. 304b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa * Events are delivered to registered instances of {@link Listener}. 314b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa * 324b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa * @hide 334b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa */ 344b3e3931270f8e406fc806bc7fa1c2788256687ddestradaapublic class GpsNavigationMessageEvent implements Parcelable { 354b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa private final GpsNavigationMessage mNavigationMessage; 364b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa 374b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa /** 384b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa * Used for receiving GPS satellite Navigation Messages from the GPS engine. 394b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa * You can implement this interface and call 404b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa * {@link LocationManager#addGpsNavigationMessageListener}. 414b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa * 424b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa * @hide 434b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa */ 444b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa public interface Listener { 454b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa void onGpsNavigationMessageReceived(GpsNavigationMessageEvent event); 464b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa } 474b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa 484b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa public GpsNavigationMessageEvent(GpsNavigationMessage message) { 494b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa if (message == null) { 504b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa throw new InvalidParameterException("Parameter 'message' must not be null."); 514b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa } 524b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa mNavigationMessage = message; 534b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa } 544b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa 554b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa @NonNull 564b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa public GpsNavigationMessage getNavigationMessage() { 574b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa return mNavigationMessage; 584b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa } 594b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa 604b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa public static final Creator<GpsNavigationMessageEvent> CREATOR = 614b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa new Creator<GpsNavigationMessageEvent>() { 624b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa @Override 634b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa public GpsNavigationMessageEvent createFromParcel(Parcel in) { 644b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa ClassLoader classLoader = getClass().getClassLoader(); 654b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa GpsNavigationMessage navigationMessage = in.readParcelable(classLoader); 664b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa return new GpsNavigationMessageEvent(navigationMessage); 674b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa } 684b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa 694b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa @Override 704b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa public GpsNavigationMessageEvent[] newArray(int size) { 714b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa return new GpsNavigationMessageEvent[size]; 724b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa } 734b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa }; 744b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa 754b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa @Override 764b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa public int describeContents() { 774b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa return 0; 784b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa } 794b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa 804b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa @Override 814b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa public void writeToParcel(Parcel parcel, int flags) { 824b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa parcel.writeParcelable(mNavigationMessage, flags); 834b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa } 844b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa 854b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa @Override 864b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa public String toString() { 874b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa StringBuilder builder = new StringBuilder("[ GpsNavigationMessageEvent:\n\n"); 884b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa builder.append(mNavigationMessage.toString()); 894b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa builder.append("\n]"); 904b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa return builder.toString(); 914b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa } 924b3e3931270f8e406fc806bc7fa1c2788256687ddestradaa} 93