1 /*
2  * Copyright (C) 2015 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.nfc;
18 
19 import android.annotation.NonNull;
20 import android.annotation.Nullable;
21 import android.os.Parcel;
22 import android.os.Parcelable;
23 
24 /**
25  * Represents a single available Nfc antenna
26  * on an Android device.
27  */
28 public final class AvailableNfcAntenna implements Parcelable {
29     /**
30      * Location of the antenna on the Y axis in millimeters.
31      * 0 is the bottom-left when the user is facing the screen
32      * and the device orientation is Portrait.
33      */
34     private final int mLocationX;
35     /**
36      * Location of the antenna on the Y axis in millimeters.
37      * 0 is the bottom-left when the user is facing the screen
38      * and the device orientation is Portrait.
39      */
40     private final int mLocationY;
41 
AvailableNfcAntenna(int locationX, int locationY)42     public AvailableNfcAntenna(int locationX, int locationY) {
43         this.mLocationX = locationX;
44         this.mLocationY = locationY;
45     }
46 
47     /**
48      * Location of the antenna on the X axis in millimeters.
49      * 0 is the bottom-left when the user is facing the screen
50      * and the device orientation is Portrait.
51      */
getLocationX()52     public int getLocationX() {
53         return mLocationX;
54     }
55 
56     /**
57      * Location of the antenna on the Y axis in millimeters.
58      * 0 is the bottom-left when the user is facing the screen
59      * and the device orientation is Portrait.
60      */
getLocationY()61     public int getLocationY() {
62         return mLocationY;
63     }
64 
AvailableNfcAntenna(Parcel in)65     private AvailableNfcAntenna(Parcel in) {
66         this.mLocationX = in.readInt();
67         this.mLocationY = in.readInt();
68     }
69 
70     public static final @android.annotation.NonNull Parcelable.Creator<AvailableNfcAntenna>
71             CREATOR = new Parcelable.Creator<AvailableNfcAntenna>() {
72                 @Override
73                 public AvailableNfcAntenna createFromParcel(Parcel in) {
74                     return new AvailableNfcAntenna(in);
75                 }
76 
77                 @Override
78                 public AvailableNfcAntenna[] newArray(int size) {
79                     return new AvailableNfcAntenna[size];
80                 }
81             };
82 
83     @Override
describeContents()84     public int describeContents() {
85         return 0;
86     }
87 
88     @Override
writeToParcel(@onNull Parcel dest, int flags)89     public void writeToParcel(@NonNull Parcel dest, int flags) {
90         dest.writeInt(mLocationX);
91         dest.writeInt(mLocationY);
92     }
93 
94     @Override
hashCode()95     public int hashCode() {
96         final int prime = 31;
97         int result = 1;
98         result = prime * result + mLocationX;
99         result = prime * result + mLocationY;
100         return result;
101     }
102 
103     /**
104      * Returns true if the specified AvailableNfcAntenna contains
105      * identical specifications.
106      */
107     @Override
equals(@ullable Object obj)108     public boolean equals(@Nullable Object obj) {
109         if (this == obj) return true;
110         if (obj == null) return false;
111         if (getClass() != obj.getClass()) return false;
112         AvailableNfcAntenna other = (AvailableNfcAntenna) obj;
113         if (this.mLocationX != other.mLocationX) return false;
114         return this.mLocationY == other.mLocationY;
115     }
116 
117     @Override
toString()118     public String toString() {
119         return "AvailableNfcAntenna " + "x: " + mLocationX + " y: " + mLocationY;
120     }
121 }
122