Skip to content

Commit

Permalink
Updates to be compatible with API level 29 (Android 10)
Browse files Browse the repository at this point in the history
This version of the app will not work on phones with Android 9 or below.
Use WifiNetworkSpecifier.Builder to connect to local (i.e. no internet)
WiFi.
Use WifiNetworkSuggestion.Builder to connect to WiFi with internet.
Use HttpURLConnection from a Network object to make http get/posts.
  • Loading branch information
R C Sridhar committed Feb 6, 2021
1 parent c3674e6 commit f5a3410
Show file tree
Hide file tree
Showing 22 changed files with 2,020 additions and 876 deletions.
5 changes: 3 additions & 2 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="in.b00m.smartconfig"
android:versionCode="14"
android:versionCode="16"
android:versionName="0.1.001" >


Expand Down Expand Up @@ -44,7 +44,8 @@
android:allowBackup="true"
android:icon="@drawable/app_icon"
android:label="@string/app_name"
android:theme="@android:style/Theme.Light.NoTitleBar" >
android:theme="@android:style/Theme.Light.NoTitleBar"
android:usesCleartextTraffic="true" >
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="@string/file_provider_authority"
Expand Down
1,243 changes: 834 additions & 409 deletions app/src/main/java/in/b00m/smartconfig/DeviceConfiguration.java

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion app/src/main/java/in/b00m/smartconfig/HelpFragment.java
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ void help_fragment_close_button() {
mPager.setAdapter(null);

FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
transaction.setCustomAnimations(R.anim.fragment_fade_out, R.anim.fragment_fade_out);
//transaction.setCustomAnimations(R.anim.fragment_fade_out, R.anim.fragment_fade_out);
transaction.remove(this);
transaction.setTransitionStyle(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
transaction.commit();
Expand Down
275 changes: 159 additions & 116 deletions app/src/main/java/in/b00m/smartconfig/LoginPage.java
Original file line number Diff line number Diff line change
Expand Up @@ -47,137 +47,180 @@
import android.view.View;
import android.widget.TextView;
import android.widget.EditText;
import android.widget.ImageView;
import in.b00m.smartconfig.utils.NetworkUtil;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkCapabilities;
import in.b00m.smartconfig.utils.SharedPreferencesInterface_;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import android.util.Log;
import android.content.Context;

@EFragment(R.layout.login_fragment)
public class LoginPage extends Fragment{

private Logger mLogger;

public MainActivity mainActivity;

@Pref
SharedPreferencesInterface_ prefs;

@ViewById
TextView resp;

@ViewById
EditText login_email_edittext;

@ViewById
EditText login_pswd_edittext;

@AfterViews
void afterViews() {
DisplayMetrics displaymetrics = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int width = displaymetrics.widthPixels;

//listen to editText focus and hiding keyboard when focus is out
/*login_email_edittext.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
hideKeyboard(v);
}
}
});
login_pswd_edittext.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
hideKeyboard(v);
}
}
});*/

mLogger = LoggerFactory.getLogger(LoginPage.class);
}

@Click
void buttonLogin() {
//mPager.setAdapter(null);

/*FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
transaction.setCustomAnimations(R.anim.fragment_fade_out, R.anim.fragment_fade_out);
transaction.remove(this);
transaction.setTransitionStyle(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
transaction.commit();*/
//Boolean ok = PostLogin(login_email_edittext.getText().toString(), login_pswd_edittext.getText().toString());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
new GetLoginResult().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, login_email_edittext.getText().toString(), login_pswd_edittext.getText().toString());
private Logger mLogger;
private static final String TAG = "LoginPage";

public MainActivity mainActivity;

@Pref
SharedPreferencesInterface_ prefs;

@ViewById
TextView resp;

@ViewById
EditText login_email_edittext;

@ViewById
EditText login_pswd_edittext;

@ViewById
public ImageView buttonLogin;

@ViewById
public ImageView buttonRegister;

@AfterViews
void afterViews() {
DisplayMetrics displaymetrics = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int width = displaymetrics.widthPixels;

//listen to editText focus and hiding keyboard when focus is out
/*login_email_edittext.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
hideKeyboard(v);
}
}
});
login_pswd_edittext.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
hideKeyboard(v);
}
}
});*/

// Check whether current network connection has internet capability and de-activate login/register buttons if not
ConnectivityManager cm = (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
Network activeNetwork = cm.getActiveNetwork();
if (activeNetwork == null) {
Log.i(TAG, "activeNetwork null");
resp.setText("Current network has no internet"); //result.toString());
buttonLogin.setImageResource(R.drawable.login_button_off);
buttonLogin.setEnabled(false);
buttonRegister.setImageResource(R.drawable.register_button_off);
buttonRegister.setEnabled(false);
} else {
NetworkCapabilities nc = cm.getNetworkCapabilities(activeNetwork);
if (nc.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)) {
resp.setText("Please login or register"); //result.toString());
Log.i(TAG, "current network has internet");
buttonLogin.setImageResource(R.drawable.login_button_on);
buttonLogin.setEnabled(true);
buttonRegister.setImageResource(R.drawable.register_button_on);
buttonRegister.setEnabled(true);
} else {
new GetLoginResult().execute(login_email_edittext.getText().toString(), login_pswd_edittext.getText().toString());
Log.i(TAG, "activeNetwork has no internet");
resp.setText("Current network has no internet"); //result.toString());
buttonLogin.setImageResource(R.drawable.login_button_off);
buttonLogin.setEnabled(false);
buttonRegister.setImageResource(R.drawable.register_button_off);
buttonRegister.setEnabled(false);
}
}

mLogger = LoggerFactory.getLogger(LoginPage.class);
}

@Click
void buttonLogin() {
//mPager.setAdapter(null);

/*FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
transaction.setCustomAnimations(R.anim.fragment_fade_out, R.anim.fragment_fade_out);
transaction.remove(this);
transaction.setTransitionStyle(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
transaction.commit();*/
//Boolean ok = PostLogin(login_email_edittext.getText().toString(), login_pswd_edittext.getText().toString());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
new GetLoginResult().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, login_email_edittext.getText().toString(), login_pswd_edittext.getText().toString());
} else {
new GetLoginResult().execute(login_email_edittext.getText().toString(), login_pswd_edittext.getText().toString());
}

}
}

//PostLogin is deprecated. See AsyncTask GetLoginResult instead
Boolean PostLogin(String email, String pswd) {
String baseUrl = "://pv.b00m.in";
mLogger.info("*AP* Logging into cloud: " + email + pswd);
Boolean result = NetworkUtil.loginToCloud(baseUrl, email, pswd);
//mLogger.info("*AP* Logging into cloud: " + resultString);
return result;

Boolean PostLogin(String email, String pswd) {
String baseUrl = "://pv.b00m.in";
mLogger.info("*AP* Logging into cloud: " + email + pswd);
Boolean result = NetworkUtil.loginToCloud(baseUrl, email, pswd);
//mLogger.info("*AP* Logging into cloud: " + resultString);
return result;
}

}
class GetLoginResult extends AsyncTask<String, Void, Boolean> {

class GetLoginResult extends AsyncTask<String, Void, Boolean> {

private Boolean mIsViaWifi;

@Override
protected void onPostExecute(Boolean result) {
mLogger.info("*AP* login result text: " + result);
super.onPostExecute(result);
//resp.setText(result.toString());
if (result) {
resp.setText("Logged in as " + prefs.sub().get());
((MainActivity) getActivity()).clearAllTabs();
((MainActivity) getActivity()).initTabs(prefs.startTab().get());
} else {
resp.setText("There was a problem"); //result.toString());
}

}

@Override
protected Boolean doInBackground(String... params) {
mLogger.info("GetLoginResult doInBackground called");
String baseUrl = "://pv.b00m.in";
mLogger.info("*AP* Logging into cloud: " + baseUrl + " " + params[0] + " " + params[1]);
Boolean result = NetworkUtil.loginToCloud(baseUrl, params[0], params[1]);
if (result) {
prefs.sub().put(params[0]);
}
return result;
}
}

/*@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mainActivity = (MainActivity) activity;
private Boolean mIsViaWifi;

@Override
protected void onPostExecute(Boolean result) {
mLogger.info("*AP* login result text: " + result);
super.onPostExecute(result);
//resp.setText(result.toString());
if (result) {
resp.setText("Logged in as " + prefs.sub().get());
((MainActivity) getActivity()).clearAllTabs();
((MainActivity) getActivity()).initTabs(prefs.startTab().get());
} else {
resp.setText("There was a problem"); //result.toString());
}

}

@Override
public void onDetach() {
super.onDetach();
mainActivity = null;
}*/
@Click
void buttonRegister() {
//mPager.setAdapter(null);
RegisterPage fragment = new RegisterPage_();

FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
transaction.setCustomAnimations(R.anim.fragment_fade_out, R.anim.fragment_fade_out);
transaction.add(android.R.id.content, fragment);
transaction.setTransitionStyle(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
transaction.commit();

}
protected Boolean doInBackground(String... params) {
mLogger.info("GetLoginResult doInBackground called");
String baseUrl = "://pv.b00m.in";
mLogger.info("*AP* Logging into cloud: " + baseUrl + " " + params[0] + " " + params[1]);
Boolean result = NetworkUtil.loginToCloud(baseUrl, params[0], params[1]);
if (result) {
prefs.sub().put(params[0]);
}
return result;
}
}

/*@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mainActivity = (MainActivity) activity;
}
@Override
public void onDetach() {
super.onDetach();
mainActivity = null;
}*/

@Click
void buttonRegister() {
//mPager.setAdapter(null);
RegisterPage fragment = new RegisterPage_();

FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
//transaction.setCustomAnimations(R.anim.fragment_fade_out, R.anim.fragment_fade_out);
transaction.add(android.R.id.content, fragment);
transaction.setTransitionStyle(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
transaction.commit();
}
}
Loading

0 comments on commit f5a3410

Please sign in to comment.