summaryrefslogtreecommitdiffstats
path: root/core/java/android/app/VibratorSettings.java
blob: 10e5ca24ef1c00f34b3c0be1f9be6345d8fe52fa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150

package android.app;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import android.content.Context;
import android.media.AudioManager;
import android.os.Parcel;
import android.os.Parcelable;

import java.io.IOException;

/** @hide */
public final class VibratorSettings implements Parcelable{

    public static final int OFF = 0;
    public static final int SILENT = 1;
    public static final int ON = 2;

    private int mVibratorId;
    private int mValue;
    private boolean mOverride;
    private boolean mDirty;

    /** @hide */
    public static final Parcelable.Creator<VibratorSettings> CREATOR = new Parcelable.Creator<VibratorSettings>() {
        public VibratorSettings createFromParcel(Parcel in) {
            return new VibratorSettings(in);
        }

        @Override
        public VibratorSettings[] newArray(int size) {
            return new VibratorSettings[size];
        }
    };


    public VibratorSettings(Parcel parcel) {
        readFromParcel(parcel);
    }

    public VibratorSettings(int vibratorId) {
        this(vibratorId, 0, false);
    }

    public VibratorSettings(int vibratorId, int value, boolean override) {
        mVibratorId = vibratorId;
        mValue = value;
        mOverride = override;
        mDirty = false;
    }

    public int getVibratorId() {
        return mVibratorId;
    }

    public int getValue() {
        return mValue;
    }

    public void setValue(int value) {
        mValue = value;
        mDirty = true;
    }

    public void setOverride(boolean override) {
        mOverride = override;
        mDirty = true;
    }

    public boolean isOverride() {
        return mOverride;
    }

    /** @hide */
    public boolean isDirty() {
        return mDirty;
    }

    /** @hide */
    public static VibratorSettings fromXml(XmlPullParser xpp, Context context)
            throws XmlPullParserException, IOException {
        int event = xpp.next();
        VibratorSettings vibratorDescriptor = new VibratorSettings(0);
        while (event != XmlPullParser.END_TAG || !xpp.getName().equals("vibratorDescriptor")) {
            if (event == XmlPullParser.START_TAG) {
                String name = xpp.getName();
                if (name.equals("vibratorId")) {
                    vibratorDescriptor.mVibratorId = Integer.parseInt(xpp.nextText());
                } else if (name.equals("value")) {
                    vibratorDescriptor.mValue = Integer.parseInt(xpp.nextText());
                } else if (name.equals("override")) {
                    vibratorDescriptor.mOverride = Boolean.parseBoolean(xpp.nextText());
                }
            }
            event = xpp.next();
        }
        return vibratorDescriptor;
    }

    /** @hide */
    public void getXmlString(StringBuilder builder, Context context) {
        builder.append("<vibratorDescriptor>\n<vibratorId>");
        builder.append(mVibratorId);
        builder.append("</vibratorId>\n<value>");
        builder.append(mValue);
        builder.append("</value>\n<override>");
        builder.append(mOverride);
        builder.append("</override>\n</vibratorDescriptor>\n");
        mDirty = false;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    /** @hide */
    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeInt(mVibratorId);
        dest.writeInt(mOverride ? 1 : 0);
        dest.writeInt(mValue);
        dest.writeInt(mDirty ? 1 : 0);
    }

    /** @hide */
    public void readFromParcel(Parcel in) {
        mVibratorId = in.readInt();
        mOverride = in.readInt() != 0;
        mValue = in.readInt();
        mDirty = in.readInt() != 0;
    }

    /** @hide */
    public void processOverride(Context context) {
        AudioManager amgr = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
        switch (mValue) {
        case OFF:
            amgr.setVibrateSetting(mVibratorId, AudioManager.VIBRATE_SETTING_OFF);
            break;
        case SILENT:
            amgr.setVibrateSetting(mVibratorId, AudioManager.VIBRATE_SETTING_ONLY_SILENT);
        default:
            amgr.setVibrateSetting(mVibratorId, AudioManager.VIBRATE_SETTING_ON);
            break;
        }
    }
}