Skip to content

Commit 034dd46

Browse files
author
Uriel Frankel
committed
added the ability to set wifi ssid and password
1 parent 041ff4e commit 034dd46

29 files changed

+260
-105
lines changed

GreeRemoteAndroid/.idea/compiler.xml

+1-17
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

GreeRemoteAndroid/.idea/gradle.xml

+4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

GreeRemoteAndroid/.idea/misc.xml

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

GreeRemoteAndroid/.idea/modules.xml

-9
This file was deleted.

GreeRemoteAndroid/app/build.gradle

+12-12
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
apply plugin: 'com.android.application'
22

33
android {
4-
compileSdkVersion 26
4+
compileSdkVersion 29
55
buildToolsVersion '28.0.3'
66
defaultConfig {
77
applicationId "tomikaa.greeremote"
88
minSdkVersion 15
9-
targetSdkVersion 26
9+
targetSdkVersion 29
1010
versionCode 1
1111
versionName "1.0"
12-
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
12+
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
1313
vectorDrawables.useSupportLibrary = true
1414
}
1515
buildTypes {
@@ -26,15 +26,15 @@ android {
2626
}
2727

2828
dependencies {
29-
compile fileTree(include: ['*.jar'], dir: 'libs')
30-
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
29+
implementation fileTree(include: ['*.jar'], dir: 'libs')
30+
androidTestCompile('androidx.test.espresso:espresso-core:3.1.0', {
3131
exclude group: 'com.android.support', module: 'support-annotations'
3232
})
33-
compile 'com.android.support:appcompat-v7:26.1.0'
34-
compile 'com.android.support.constraint:constraint-layout:1.0.2'
35-
compile 'com.android.support:design:26.1.0'
36-
compile 'com.google.code.gson:gson:2.8.0'
37-
compile 'com.android.support:support-v4:26.1.0'
38-
compile 'com.android.support:recyclerview-v7:26.1.0'
39-
testCompile 'junit:junit:4.12'
33+
implementation 'androidx.appcompat:appcompat:1.2.0'
34+
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
35+
implementation 'com.google.android.material:material:1.2.1'
36+
implementation 'com.google.code.gson:gson:2.8.6'
37+
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
38+
implementation 'androidx.recyclerview:recyclerview:1.1.0'
39+
testImplementation 'junit:junit:4.12'
4040
}

GreeRemoteAndroid/app/src/androidTest/java/tomikaa/greeremote/ExampleInstrumentedTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package tomikaa.greeremote;
22

33
import android.content.Context;
4-
import android.support.test.InstrumentationRegistry;
5-
import android.support.test.runner.AndroidJUnit4;
4+
import androidx.test.platform.app.InstrumentationRegistry;
5+
import androidx.test.ext.junit.runners.AndroidJUnit4;
66

77
import org.junit.Test;
88
import org.junit.runner.RunWith;

GreeRemoteAndroid/app/src/main/AndroidManifest.xml

+3
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
package="tomikaa.greeremote">
44

55
<uses-permission android:name="android.permission.INTERNET" />
6+
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
7+
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
8+
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
69
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
710

811
<application

GreeRemoteAndroid/app/src/main/java/tomikaa/greeremote/DeviceActivity.java

+29-2
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,25 @@
11
package tomikaa.greeremote;
22

3+
import android.content.DialogInterface;
34
import android.content.Intent;
45
import android.os.Bundle;
5-
import android.support.v4.content.res.ResourcesCompat;
6-
import android.support.v7.app.AppCompatActivity;
76
import android.util.Log;
7+
import android.view.LayoutInflater;
88
import android.view.Menu;
9+
import android.view.MenuItem;
910
import android.view.View;
1011
import android.widget.ImageButton;
1112
import android.widget.SeekBar;
1213
import android.widget.Switch;
1314
import android.widget.TextView;
1415

16+
import androidx.annotation.NonNull;
17+
import androidx.appcompat.app.AlertDialog;
18+
import androidx.appcompat.app.AppCompatActivity;
19+
import androidx.core.content.res.ResourcesCompat;
20+
21+
import com.google.android.material.textfield.TextInputEditText;
22+
1523
import tomikaa.greeremote.Gree.Device.Device;
1624
import tomikaa.greeremote.Gree.Device.DeviceManager;
1725
import tomikaa.greeremote.Gree.Device.DeviceManagerEventListener;
@@ -238,6 +246,25 @@ private boolean isSwitchChecked(int id) {
238246
return false;
239247
}
240248

249+
@Override
250+
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
251+
if(item.getItemId() == R.id.wifi_settings){
252+
final View usernamePasswordView = LayoutInflater.from(this).inflate(R.layout.username_password_dialog, null);
253+
new AlertDialog.Builder(this).setView(usernamePasswordView)
254+
.setPositiveButton(getString(R.string.ok), new DialogInterface.OnClickListener() {
255+
@Override
256+
public void onClick(DialogInterface dialog, int which) {
257+
TextInputEditText name = usernamePasswordView.findViewById(R.id.name);
258+
TextInputEditText password = usernamePasswordView.findViewById(R.id.password);
259+
Log.d("uriel",name.getText().toString() + " " + password.getText().toString());
260+
mDevice.setWifiSsidPassword(name.getText().toString(),password.getText().toString());
261+
}
262+
}).create().show();
263+
264+
}
265+
return true;
266+
}
267+
241268
private void setupFanSpeedSeekBarChangeListener() {
242269
((SeekBar) findViewById(R.id.fanSpeedSeekBar)).setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
243270
@Override

GreeRemoteAndroid/app/src/main/java/tomikaa/greeremote/DeviceHelpActivity.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
package tomikaa.greeremote;
22

3-
import android.support.v7.app.AppCompatActivity;
43
import android.os.Bundle;
54

5+
import androidx.appcompat.app.AppCompatActivity;
6+
67
/*
78
* This file is part of GreeRemoteAndroid.
89
*

GreeRemoteAndroid/app/src/main/java/tomikaa/greeremote/DeviceItemFragment.java

+6-5
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,16 @@
22

33
import android.content.Context;
44
import android.os.Bundle;
5-
import android.support.v4.app.Fragment;
6-
import android.support.v7.widget.DividerItemDecoration;
7-
import android.support.v7.widget.GridLayoutManager;
8-
import android.support.v7.widget.LinearLayoutManager;
9-
import android.support.v7.widget.RecyclerView;
105
import android.view.LayoutInflater;
116
import android.view.View;
127
import android.view.ViewGroup;
138

9+
import androidx.fragment.app.Fragment;
10+
import androidx.recyclerview.widget.DividerItemDecoration;
11+
import androidx.recyclerview.widget.GridLayoutManager;
12+
import androidx.recyclerview.widget.LinearLayoutManager;
13+
import androidx.recyclerview.widget.RecyclerView;
14+
1415
import java.util.ArrayList;
1516
import java.util.List;
1617

GreeRemoteAndroid/app/src/main/java/tomikaa/greeremote/Gree/Device/Device.java

+17
Original file line numberDiff line numberDiff line change
@@ -63,47 +63,64 @@ enum VerticalSwingMode {
6363
String getId();
6464

6565
String getName();
66+
6667
void setName(String name);
6768

6869
Mode getMode();
70+
6971
void setMode(Mode mode);
7072

7173
FanSpeed getFanSpeed();
74+
7275
void setFanSpeed(FanSpeed fanSpeed);
7376

7477
int getTemperature();
78+
7579
void setTemperature(int value, TemperatureUnit unit);
7680

7781
boolean isPoweredOn();
82+
7883
void setPoweredOn(boolean poweredOn);
7984

8085
boolean isLightEnabled();
86+
8187
void setLightEnabled(boolean enabled);
8288

8389
boolean isQuietModeEnabled();
90+
8491
void setQuietModeEnabled(boolean enabled);
8592

8693
boolean isTurboModeEnabled();
94+
8795
void setTurboModeEnabled(boolean enabled);
8896

8997
boolean isHealthModeEnabled();
98+
9099
void setHealthModeEnabled(boolean enabled);
91100

92101
boolean isAirModeEnabled();
102+
93103
void setAirModeEnabled(boolean enabled);
94104

95105
boolean isXfanModeEnabled();
106+
96107
void setXfanModeEnabled(boolean enabled);
97108

98109
boolean isSavingModeEnabled();
110+
99111
void setSavingModeEnabled(boolean enabled);
100112

101113
boolean isSleepModeEnabled();
114+
102115
void setSleepModeEnabled(boolean enabled);
103116

104117
VerticalSwingMode getVerticalSwingMode();
118+
105119
void setVerticalSwingMode(VerticalSwingMode mode);
106120

107121
int getParameter(String name);
122+
108123
void setParameter(String name, int value);
124+
125+
void setWifiSsidPassword(String ssid, String psw);
109126
}

GreeRemoteAndroid/app/src/main/java/tomikaa/greeremote/Gree/Device/DeviceImpl.java

+25-21
Original file line numberDiff line numberDiff line change
@@ -36,25 +36,24 @@ class DeviceImpl implements Device {
3636
private final String mLogTag;
3737

3838
public enum Parameter {
39-
POWER ("Pow"),
40-
MODE ("Mod"),
41-
TEMPERATURE ("SetTem"),
42-
TEMPERATURE_UNIT ("TemUn"),
43-
FAN_SPEED ("WdSpd"),
44-
AIR_MODE ("Air"),
45-
XFAN_MODE ("Blo"),
46-
HEALTH_MODE ("Health"),
47-
SLEEP_MODE ("SwhSlp"),
48-
QUIET_MODE ("Quiet"),
49-
TURBO_MODE ("Tur"),
50-
SAVING_MODE ("SvSt"),
51-
LIGHT ("Lig"),
52-
HORIZONTAL_SWING ("SwingLfRig"),
53-
VERTICAL_SWING ("SwUpDn"),
54-
STHT_MODE ("StHt"),
55-
HEAT_COOL_TYPE ("HeatCoolType"),
56-
TEM_REC_MODE ("TemRec")
57-
;
39+
POWER("Pow"),
40+
MODE("Mod"),
41+
TEMPERATURE("SetTem"),
42+
TEMPERATURE_UNIT("TemUn"),
43+
FAN_SPEED("WdSpd"),
44+
AIR_MODE("Air"),
45+
XFAN_MODE("Blo"),
46+
HEALTH_MODE("Health"),
47+
SLEEP_MODE("SwhSlp"),
48+
QUIET_MODE("Quiet"),
49+
TURBO_MODE("Tur"),
50+
SAVING_MODE("SvSt"),
51+
LIGHT("Lig"),
52+
HORIZONTAL_SWING("SwingLfRig"),
53+
VERTICAL_SWING("SwUpDn"),
54+
STHT_MODE("StHt"),
55+
HEAT_COOL_TYPE("HeatCoolType"),
56+
TEM_REC_MODE("TemRec");
5857

5958
private final String mParam;
6059

@@ -147,8 +146,8 @@ public int getTemperature() {
147146
@Override
148147
public void setTemperature(int value, TemperatureUnit unit) {
149148
setParameters(
150-
new Parameter[] { Parameter.TEMPERATURE, Parameter.TEMPERATURE_UNIT },
151-
new Integer[] { value, unit.ordinal() }
149+
new Parameter[]{Parameter.TEMPERATURE, Parameter.TEMPERATURE_UNIT},
150+
new Integer[]{value, unit.ordinal()}
152151
);
153152
}
154153

@@ -262,6 +261,11 @@ public void setParameter(String name, int value) {
262261
mDeviceManager.setParameter(this, name, value);
263262
}
264263

264+
@Override
265+
public void setWifiSsidPassword(String ssid, String psw) {
266+
mDeviceManager.setWifi(ssid, psw);
267+
}
268+
265269
@Override
266270
public boolean equals(Object o) {
267271
if (this == o) return true;

GreeRemoteAndroid/app/src/main/java/tomikaa/greeremote/Gree/Device/DeviceManager.java

+30
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import tomikaa.greeremote.Gree.Packs.DevicePack;
2121
import tomikaa.greeremote.Gree.Packs.ResultPack;
2222
import tomikaa.greeremote.Gree.Packs.StatusPack;
23+
import tomikaa.greeremote.Gree.Packs.WifiSettingsPack;
2324

2425
/*
2526
* This file is part of GreeRemoteAndroid.
@@ -126,6 +127,35 @@ public void onFinished() {
126127
comm.execute(new Packet[] { packet });
127128
}
128129

130+
131+
public void setWifi(String ssid, String psw){
132+
133+
WifiSettingsPack packet = new WifiSettingsPack();
134+
packet.psw = psw;
135+
packet.ssid = ssid;
136+
137+
final AsyncCommunicator comm = new AsyncCommunicator(mKeyChain);
138+
comm.setCommunicationFinishedListener(new AsyncCommunicationFinishedListener() {
139+
@Override
140+
public void onFinished() {
141+
try {
142+
final Packet[] responses = comm.get();
143+
144+
for (Packet response : responses) {
145+
if (mDevices.containsKey(response.cid)) {
146+
mDevices.get(response.cid).updateWithResultPack((ResultPack) response.pack);
147+
}
148+
}
149+
150+
sendEvent(DeviceManagerEventListener.Event.DEVICE_STATUS_UPDATED);
151+
} catch (Exception e) {
152+
Log.e(LOG_TAG, "Failed to get response of command. Error: " + e.getMessage());
153+
}
154+
}
155+
});
156+
comm.execute(new Packet[] { packet });
157+
}
158+
129159
public void discoverDevices() {
130160
Log.i(LOG_TAG, "Device discovery running...");
131161

0 commit comments

Comments
 (0)