diff --git a/app/build.gradle b/app/build.gradle index 8b3de07..e487fa8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -26,6 +26,9 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'androidx.appcompat:appcompat:1.0.2' + implementation 'com.google.android.material:material:1.0.0' + implementation 'com.google.code.gson:gson:2.8.6' + implementation 'androidx.appcompat:appcompat:1.0.2' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation 'com.google.android.material:material:1.0.0' testImplementation 'junit:junit:4.12' @@ -34,4 +37,15 @@ dependencies { implementation 'com.jakewharton:butterknife:10.0.0' annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0' implementation 'com.google.android.gms:play-services-location:17.0.0' + + + + + + + + + + + implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 303a1ce..1c5b3f0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -4,11 +4,15 @@ package="com.android.splitpersonality"> - - - - - + + + + + + + + + - - - - - + + + + + + + + diff --git a/app/src/main/java/com/android/splitpersonality/WiFi/PageViewModel.java b/app/src/main/java/com/android/splitpersonality/WiFi/PageViewModel.java new file mode 100644 index 0000000..8ec1f51 --- /dev/null +++ b/app/src/main/java/com/android/splitpersonality/WiFi/PageViewModel.java @@ -0,0 +1,23 @@ +package com.android.splitpersonality.WiFi; + +import androidx.arch.core.util.Function; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.Transformations; +import androidx.lifecycle.ViewModel; +public class PageViewModel extends ViewModel { + private MutableLiveData mTitle = new MutableLiveData<>(); + private LiveData mText = Transformations.map(mTitle, new Function() { + @Override + public String apply(String input) { + return "Contact not available in " + input; + } + }); + public void setIndex(String index) { + mTitle.setValue(index); + } + public LiveData getText() { + return mText; + } +} + diff --git a/app/src/main/java/com/android/splitpersonality/WiFi/WifiActivity.java b/app/src/main/java/com/android/splitpersonality/WiFi/WifiActivity.java index 85019f4..3fd608f 100644 --- a/app/src/main/java/com/android/splitpersonality/WiFi/WifiActivity.java +++ b/app/src/main/java/com/android/splitpersonality/WiFi/WifiActivity.java @@ -1,8 +1,12 @@ package com.android.splitpersonality.WiFi; +import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProviders; import android.Manifest; import android.content.BroadcastReceiver; @@ -10,38 +14,35 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; +import android.content.SharedPreferences; import android.content.pm.PackageManager; -import android.graphics.Color; import android.location.LocationManager; -import android.net.ConnectivityManager; import android.net.wifi.ScanResult; -import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; -import android.os.Build; import android.os.Bundle; import android.util.Log; +import android.view.LayoutInflater; import android.view.View; -import android.widget.Button; +import android.view.ViewGroup; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import com.android.splitpersonality.R; -import com.google.android.gms.location.LocationRequest; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; -public class WifiActivity extends AppCompatActivity { +public class WifiActivity extends AppCompatActivity { WifiManager manager; WifiReceiver receiver; LocationManager locationManager; TextView text; List list; - ArrayList provider,x,y; + ArrayList provider,x,y, bss; recyclerAdapter adapter; ListView listView; @@ -67,7 +68,7 @@ public void location() .setMessage("Please enable location") .setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialogInterface, int i) { - startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS)); +// startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS)); } }) .setNegativeButton("No", new DialogInterface.OnClickListener() { @@ -145,6 +146,11 @@ public void onReceive(Context context, Intent intent) { } }; + @Override + public void onPointerCaptureChanged(boolean hasCapture) { + + } + class WifiReceiver extends BroadcastReceiver { @@ -156,21 +162,39 @@ public void onReceive(Context c, Intent intent) { if(!provider.isEmpty()) provider.clear(); if(!x.isEmpty()) x.clear(); if(!y.isEmpty()) y.clear(); - + bss= new ArrayList<>(); String providerName; // print details for (int i = 0; i < list.size(); i++) { providerName = " "+(list.get(i).SSID)+" ("+(list.get(i).BSSID)+" )\n Frequency: "+(list.get(i).frequency)+" MHz\n Strength: "+returnlevel(list.get(i).level); + bss.add(list.get(i).BSSID+""); provider.add(providerName); x.add((list.get(i).SSID)); y.add(Integer.toString(list.get(i).level)); Log.i("pn",providerName); } - adapter = new recyclerAdapter(WifiActivity.this, provider); - listView.setAdapter(adapter); - adapter.notifyDataSetChanged(); -// location(); + Log.e("wwwww",provider.toString()); + SharedPreferences sharedPref = WifiActivity.this.getSharedPreferences("wifi_info",Context.MODE_PRIVATE); + SharedPreferences.Editor editor = sharedPref.edit(); + editor.putString("wifis", provider.toString()); + editor.putString("bssid", bss.toString()); + editor.apply(); + Intent wifiIntent = new Intent(WifiActivity.this,viewpagerr.class); + startActivity(wifiIntent); + } + } + + //store bssid for triggering profiles + public void fx(View view) + { + Log.e("aaa",listView.getCount()+""); + for(int i=0;i(); + bss=new ArrayList<>(); + sharedPref = getActivity().getSharedPreferences("wifi_info",Context.MODE_PRIVATE); + String defaultValue = "none"; + provider = new ArrayList(Arrays.asList(sharedPref.getString("wifis", defaultValue).split(","))); + bss = new ArrayList(Arrays.asList(sharedPref.getString("bssid", defaultValue).split(","))); + SharedPreferences settings = getActivity().getSharedPreferences("checks", Context.MODE_PRIVATE); + settings.edit().clear().commit(); + } + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + View root = inflater.inflate(R.layout.activity_wifi, container, false); +// final TextView textView = root.findViewById(R.id.text); + final ListView listView = root.findViewById(R.id.list); + final TextView text2 = root.findViewById(R.id.text2); + final Button save = root.findViewById(R.id.button); + pageViewModel.getText().observe(this, new Observer() { + @Override + public void onChanged(@Nullable String s) { + text2.setText("Choose SSID's to save so as profiles trigger when device connects to these WAPs!"); + adapter=new recyclerAdapter(getActivity(),provider,bss); + listView.setAdapter(adapter); + adapter.notifyDataSetChanged(); + } + }); + + save.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + HashMap> map = new HashMap>(); + for(int i=0;i { Activity act; - List wifinames; + List wifinames,bssid; private LayoutInflater inflater; + SharedPreferences sharedPref; - public recyclerAdapter(Activity a, List wifiName) { + public recyclerAdapter(Activity a, List wifiName, List bssid) { super(a, R.layout.list_style, wifiName); act = a; inflater = LayoutInflater.from(act); this.wifinames = wifiName; + this.bssid=bssid; } @Override public View getView(int position, View convertView, ViewGroup parent) { convertView = inflater.inflate(R.layout.list_style, parent, false); TextView wifiProvider = convertView.findViewById(R.id.wifiname); + TextView bssid1 = convertView.findViewById(R.id.bssid); wifiProvider.setText(wifinames.get(position)); + bssid1.setText(bssid.get(position)); + CheckBox check = convertView.findViewById(R.id.checkBox); + sharedPref = getContext().getSharedPreferences("checks",Context.MODE_PRIVATE); + Boolean defaultValue = false; + check.setChecked(sharedPref.getBoolean(String.valueOf(position), defaultValue)); + Log.e("act"+position,sharedPref.getBoolean(String.valueOf(position), defaultValue)+""); + check.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + SharedPreferences sharedPref = getContext().getSharedPreferences("checks", Context.MODE_PRIVATE); + SharedPreferences.Editor editor = sharedPref.edit(); + if(check.isChecked()) + editor.putBoolean(String.valueOf(position), true); + else + editor.putBoolean(String.valueOf(position), false); + editor.apply(); + } + }); return convertView; } } diff --git a/app/src/main/java/com/android/splitpersonality/WiFi/saved_wifi.java b/app/src/main/java/com/android/splitpersonality/WiFi/saved_wifi.java new file mode 100644 index 0000000..cb9a717 --- /dev/null +++ b/app/src/main/java/com/android/splitpersonality/WiFi/saved_wifi.java @@ -0,0 +1,110 @@ +package com.android.splitpersonality.WiFi; + +import android.content.Context; +import android.content.SharedPreferences; +import android.icu.text.AlphabeticIndex; +import android.os.Bundle; +import android.util.Log; +import android.util.Pair; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.CheckBox; +import android.widget.ListView; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProviders; + +import com.android.splitpersonality.R; +import com.google.gson.Gson; +import com.google.gson.JsonSyntaxException; +import com.google.gson.reflect.TypeToken; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + +public class saved_wifi extends Fragment{ + private static final String TAG = ""; + private PageViewModel pageViewModel; + public saved_wifi() {} + recyclerAdapter adapter; + ArrayList provider,bss; + SharedPreferences sharedPref;String toastString; + + public static saved_wifi newInstance() { + return new saved_wifi(); + } + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + pageViewModel = ViewModelProviders.of((Fragment) this).get(PageViewModel.class); + pageViewModel.setIndex(TAG); + provider = new ArrayList<>(); bss = new ArrayList<>(); + SharedPreferences prefs = getActivity().getSharedPreferences("wifi_saved", Context.MODE_PRIVATE); + String storedHashMapString = prefs.getString("bssids", "oopsDintWork"); + Log.e("abcdc1",storedHashMapString); + java.lang.reflect.Type type = new TypeToken>>(){}.getType(); + Gson gson = new Gson(); + HashMap> testHashMap2 =new HashMap>(); + testHashMap2= gson.fromJson(storedHashMapString, type); + Boolean failed=false; + //use values + try + { + for(Map.Entry> entry: testHashMap2.entrySet()) { + provider.add(entry.getKey() + " : " + entry.getValue().first); + bss.add(entry.getKey() + " : " + entry.getValue().first); + Log.e("abhi",entry.getKey() + " : " + entry.getValue().first); + } + } + catch (IllegalStateException | JsonSyntaxException exception) { + failed = true; + //... + } + } + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + View root = inflater.inflate(R.layout.activity_wifi, container, false); + final ListView listView = root.findViewById(R.id.list); + final TextView text2 = root.findViewById(R.id.text2); + final Button save = root.findViewById(R.id.button); + pageViewModel.getText().observe(this, new Observer() { + @Override + public void onChanged(@Nullable String s) { +// text2.setText("Choose SSID's to save so as profiles trigger when device connects to these WAPs!"); + adapter=new recyclerAdapter(getActivity(),provider,bss); + listView.setAdapter(adapter); + adapter.notifyDataSetChanged(); + } + }); + + save.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + for(int i=0;i() { +// @Override +// public void onSuccess(Location location) { +// // Got last known location. In some rare situations this can be null. +// if (location != null) { +// Log.e("loc",location.toString()); +// // Logic to handle location object +// } +// } +// }); + getLocation(); + } + + + + void getLocation() { + try { + locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); + locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this); + } catch (SecurityException e) { + e.printStackTrace(); + } + } + + + public void onLocationChanged(Location location) { + te.setText("Latitude: " + location.getLatitude() + "\n" + "Longitude: " + location.getLongitude()); + try { + Geocoder geocoder = new Geocoder(this, Locale.getDefault()); + List
addresses = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1); + te.setText(addresses.get(0).getAddressLine(0) + ", " + + addresses.get(0).getAddressLine(1) + ", " + addresses.get(0).getAddressLine(2)); + } catch (Exception e) { + } + } + + + public void onProviderDisabled(String provider) { + Toast.makeText(locationActivity.this, "Please Enable GPS and Internet", Toast.LENGTH_SHORT).show(); + } + + + public void onStatusChanged(String provider, int status, Bundle extras) { + + } + + + public void onProviderEnabled(String provider) { + + } + +} diff --git a/app/src/main/res/layout/activity_all_wifi.xml b/app/src/main/res/layout/activity_all_wifi.xml new file mode 100644 index 0000000..614b9fb --- /dev/null +++ b/app/src/main/res/layout/activity_all_wifi.xml @@ -0,0 +1,40 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_location.xml b/app/src/main/res/layout/activity_location.xml new file mode 100644 index 0000000..9b7d1d0 --- /dev/null +++ b/app/src/main/res/layout/activity_location.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_viewpagerr.xml b/app/src/main/res/layout/activity_viewpagerr.xml new file mode 100644 index 0000000..064c4cf --- /dev/null +++ b/app/src/main/res/layout/activity_viewpagerr.xml @@ -0,0 +1,29 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_wifi.xml b/app/src/main/res/layout/activity_wifi.xml index b8c87c6..eb8e9c5 100644 --- a/app/src/main/res/layout/activity_wifi.xml +++ b/app/src/main/res/layout/activity_wifi.xml @@ -1,5 +1,6 @@ - @@ -8,11 +9,26 @@ android:id="@+id/text" android:layout_width="match_parent" android:layout_height="wrap_content" + android:text="Please switch on WiFi" + tools:visibility="gone" /> + + +