Index: .gitignore =================================================================== --- .gitignore (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ .gitignore (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,14 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx Index: .idea/codeStyles/Project.xml IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- .idea/codeStyles/Project.xml (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ .idea/codeStyles/Project.xml (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,116 @@ + + + + + + + +
+ + + + xmlns:android + + ^$ + + + +
+
+ + + + xmlns:.* + + ^$ + + + BY_NAME + +
+
+ + + + .*:id + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + .*:name + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + name + + ^$ + + + +
+
+ + + + style + + ^$ + + + +
+
+ + + + .* + + ^$ + + + BY_NAME + +
+
+ + + + .* + + http://schemas.android.com/apk/res/android + + + ANDROID_ATTRIBUTE_ORDER + +
+
+ + + + .* + + .* + + + BY_NAME + +
+
+
+
+
+
\ No newline at end of file Index: .idea/gradle.xml IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- .idea/gradle.xml (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ .idea/gradle.xml (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,20 @@ + + + + + + + \ No newline at end of file Index: .idea/misc.xml IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- .idea/misc.xml (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ .idea/misc.xml (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file Index: .idea/runConfigurations.xml =================================================================== --- .idea/runConfigurations.xml (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ .idea/runConfigurations.xml (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file Index: .idea/vcs.xml =================================================================== --- .idea/vcs.xml (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ .idea/vcs.xml (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file Index: app/.gitignore =================================================================== --- app/.gitignore (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ app/.gitignore (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,1 @@ +/build Index: app/build.gradle =================================================================== --- app/build.gradle (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ app/build.gradle (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,37 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 29 + buildToolsVersion "29.0.3" + + defaultConfig { + applicationId "com.kfb.kfbv1" + minSdkVersion 26 + targetSdkVersion 29 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + +} + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + + implementation 'com.loopj.android:android-async-http:1.4.9' + + implementation 'androidx.appcompat:appcompat:1.1.0' + implementation 'androidx.constraintlayout:constraintlayout:1.1.3' + testImplementation 'junit:junit:4.12' + androidTestImplementation 'androidx.test.ext:junit:1.1.1' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' + implementation 'androidx.recyclerview:recyclerview:1.1.0' +} Index: app/debug/output.json =================================================================== --- app/debug/output.json (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ app/debug/output.json (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,1 @@ +[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.0","enabled":true,"outputFile":"app-debug.apk","fullName":"debug","baseName":"debug","dirName":""},"path":"app-debug.apk","properties":{}}] \ No newline at end of file Index: app/proguard-rules.pro =================================================================== --- app/proguard-rules.pro (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ app/proguard-rules.pro (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile Index: app/src/androidTest/java/com/kfb/kfbv1/ExampleInstrumentedTest.java =================================================================== --- app/src/androidTest/java/com/kfb/kfbv1/ExampleInstrumentedTest.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ app/src/androidTest/java/com/kfb/kfbv1/ExampleInstrumentedTest.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,27 @@ +package com.kfb.kfbv1; + +import android.content.Context; + +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + + assertEquals("com.kfb.kfbv1", appContext.getPackageName()); + } +} Index: app/src/main/AndroidManifest.xml =================================================================== --- app/src/main/AndroidManifest.xml (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ app/src/main/AndroidManifest.xml (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file Index: app/src/main/java/com/kfb/kfbv1/GateActivity.java =================================================================== --- app/src/main/java/com/kfb/kfbv1/GateActivity.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ app/src/main/java/com/kfb/kfbv1/GateActivity.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,85 @@ +package com.kfb.kfbv1; + +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.view.WindowManager; +import android.widget.TextView; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.kfb.kfbv1.dummy.DummyContent; + +import com.kfb.kfbv1.model.KfbGate; +import com.kfb.kfbv1.model.KfbHttpRequest; +import com.kfb.kfbv1.model.KfbModel; +import com.kfb.kfbv1.model.KfbTask; + +import java.util.ArrayList; +import java.util.List; + +public class GateActivity extends AppCompatActivity +{ + private MyItemRecyclerViewAdapter listAdapter; + private List ld1 = new ArrayList() ; + private RecyclerView recycler; + private RecyclerView.LayoutManager layoutManager; + private final Handler handler = new Handler(){ + @Override + public void handleMessage(Message msg) { + if(msg.what==2) { + DummyContent.DummyItem dr = ld1.get(msg.arg1); + dr.Temperatura = KfbModel.getData().getGates().getmGate().get(msg.arg1).getmMaxT(); + dr.State = KfbModel.getData().getGates().getmGate().get(msg.arg1).getmStatus(); + dr.Error = KfbModel.getData().getGates().getmGate().get(msg.arg1).getmError(); + listAdapter.notifyDataSetChanged(); + } + super.handleMessage(msg); + } + }; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_gate); + getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + + recycler = findViewById(R.id.recview); + recycler.setHasFixedSize(true); + layoutManager = new LinearLayoutManager(this); + recycler.setLayoutManager(layoutManager); + + + listAdapter = new MyItemRecyclerViewAdapter( ld1,null); + recycler.setAdapter(listAdapter); + + KfbModel.getData().sendHttp=true; + KfbGate lGate = new KfbGate(); + lGate.setmAdres("http://192.168.13.15"); + // lGate.setmAdres("http://p.sorveno.com/pp.html"); + lGate.setmName("Gate 1"); + KfbModel.getData().getGates().AddGate(lGate); + lGate = new KfbGate(); + lGate.setmAdres("http://192.168.13.16"); + lGate.setmName("Gate 2"); + KfbModel.getData().getGates().AddGate(lGate); + for (int i =0; i + * See the Android Training lesson Communicating with Other Fragments for more information. + */ + public interface OnListFragmentInteractionListener { + // TODO: Update argument type and name + void onListFragmentInteraction(DummyContent.DummyItem item); + } +} \ No newline at end of file Index: app/src/main/java/com/kfb/kfbv1/KfbProgrsBar.java =================================================================== --- app/src/main/java/com/kfb/kfbv1/KfbProgrsBar.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ app/src/main/java/com/kfb/kfbv1/KfbProgrsBar.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,49 @@ +package com.kfb.kfbv1; + +import android.app.Dialog; +import android.app.ProgressDialog; +import android.content.Context; +import android.graphics.drawable.ColorDrawable; +import android.os.Handler; +import android.widget.ProgressBar; + +import com.kfb.kfbv1.model.KfbModel; + +public class KfbProgrsBar extends Dialog { + private ProgressBar progressBar; + private int pStatus = 0; + private Handler handler = new Handler(); + public KfbProgrsBar(Context context) { + super(context); + getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); + setContentView(R.layout.progres); + + progressBar = (ProgressBar) findViewById(R.id.progressBar); + + new Thread(new Runnable() { + @Override + public void run() { + while (pStatus <= 100) { + if(pStatus==100) + { + pStatus = 0; + } + handler.post(new Runnable() { + @Override + public void run() { + progressBar.setProgress(pStatus); + + } + }); + try { + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + pStatus++; + } + } + }).start(); + + } +} Index: app/src/main/java/com/kfb/kfbv1/MainActivity.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- app/src/main/java/com/kfb/kfbv1/MainActivity.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ app/src/main/java/com/kfb/kfbv1/MainActivity.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,109 @@ +package com.kfb.kfbv1; + +import androidx.appcompat.app.AppCompatActivity; + +import android.content.Context; +import android.content.Intent; +import android.net.wifi.WifiConfiguration; +import android.net.wifi.WifiEnterpriseConfig; +import android.os.AsyncTask; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.view.View; +import android.view.WindowManager; +import android.widget.Button; +import android.widget.ProgressBar; +import android.widget.TextView; + +import com.kfb.kfbv1.hotspot.WifiApManager; +import com.kfb.kfbv1.model.KfbGate; +import com.kfb.kfbv1.model.KfbGates; +import com.kfb.kfbv1.model.KfbHttpRequest; +import com.kfb.kfbv1.model.KfbModel; +import com.kfb.kfbv1.model.KfbTask; + + +public class MainActivity extends AppCompatActivity { + private WifiApManager wifiApManager; + private ProgressBar progressBar; + private final Handler handler = new Handler(){ + @Override + public void handleMessage(Message msg) { + if(msg.what==1) { + TextView outtt = (TextView) findViewById(R.id.editText4); + // if(KfbModel.getData().error==false) { + // outtt.setText(KfbModel.getData().getGates().getmGate().get(0).getmMaxT()+ + // "status=" + KfbModel.getData().getGates().getmGate().get(0).getmStatus() ); + // } + // else{ + outtt.setText(KfbModel.getData().tekser); + // } + KfbModel.getData().progresBar.dismiss(); + } + super.handleMessage(msg); + } + }; + private KfbTask tr = new KfbTask(); + private Thread T1 = null; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + Button btn1 = (Button) findViewById(R.id.button); + btn1.setOnClickListener(new View.OnClickListener() { + + public void onClick(View v) { + try { + onSendClik(v); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + }); + + Button btn = (Button) findViewById(R.id.login); + btn.setOnClickListener(new View.OnClickListener() { + + public void onClick(View v) { + onLoginClik(v); + } + }); + + wifiApManager = new WifiApManager(this); + + // force to show the settings page for demonstration purpose of this method + // wifiApManager.showWritePermissionSettings(true); + //WifiConfiguration con = new WifiConfiguration(); + //con.SSID = "KFB_SaFE"; + //wifiApManager.setWifiApEnabled(con, true); + } + private void onLoginClik(View v) { + Intent i = new Intent(getApplicationContext(),GateActivity.class); + startActivity(i); + + } + private void onSendClik(View v) throws InterruptedException { + KfbModel.getData().progresBar = new KfbProgrsBar(this); + KfbModel.getData().progresBar.show(); + TextView url = (TextView)findViewById(R.id.editText); + KfbModel.getData().tekser = null; + KfbModel.getData().handler = handler; + KfbModel.getData().url = url.getText().toString(); + + KfbGate g1 = new KfbGate(); + g1.setmName("Test1"); + // KfbModel.getData().getGates().AddGate(g1); + + T1 = new Thread(tr); + T1.start(); + } + @Override + protected void onResume() { + super.onResume(); + + wifiApManager.showWritePermissionSettings(false); + } + +} Index: app/src/main/java/com/kfb/kfbv1/MyAcessPoint.java =================================================================== --- app/src/main/java/com/kfb/kfbv1/MyAcessPoint.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ app/src/main/java/com/kfb/kfbv1/MyAcessPoint.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,63 @@ +package com.kfb.kfbv1; + +import android.content.Context; +import android.net.wifi.WifiConfiguration; +import android.net.wifi.WifiManager; +import android.os.Handler; +import android.util.Log; + +import androidx.core.util.Preconditions; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + + + +public class MyAcessPoint { + + private static final int WIFI_AP_STATE_FAILED = 4; + private WifiManager mWifiManager = null; + private final String TAG = "Wifi Access Manager"; + private Method wifiControlMethod; + private Method wifiApConfigurationMethod; + private Method wifiApState; + + public MyAcessPoint(Context context) throws SecurityException, NoSuchMethodException { + mWifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE); + wifiControlMethod = mWifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class); + wifiApConfigurationMethod = mWifiManager.getClass().getMethod("getWifiApConfiguration", null); + wifiApState = mWifiManager.getClass().getMethod("getWifiApState"); + } + + public boolean setWifiApState(WifiConfiguration config, boolean enabled) { + try { + if (enabled) { + mWifiManager.setWifiEnabled(!enabled); + } + return (Boolean) wifiControlMethod.invoke(mWifiManager, config, enabled); + } catch (Exception e) { + Log.e(TAG, "", e); + return false; + } + } + + public WifiConfiguration getWifiApConfiguration() { + try { + return (WifiConfiguration) wifiApConfigurationMethod.invoke(mWifiManager, null); + } catch (Exception e) { + return null; + } + } + + public int getWifiApState() { + try { + return (Integer) wifiApState.invoke(mWifiManager); + } catch (Exception e) { + Log.e(TAG, "", e); + return WIFI_AP_STATE_FAILED; + } + } +} + + + Index: app/src/main/java/com/kfb/kfbv1/MyItemRecyclerViewAdapter.java =================================================================== --- app/src/main/java/com/kfb/kfbv1/MyItemRecyclerViewAdapter.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ app/src/main/java/com/kfb/kfbv1/MyItemRecyclerViewAdapter.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,86 @@ +package com.kfb.kfbv1; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.recyclerview.widget.RecyclerView; + +import com.kfb.kfbv1.dummy.DummyContent; + +import java.util.List; + +/** + * {@link RecyclerView.Adapter} that can display a {@link DummyItem} and makes a call to the + * specified {@link OnListFragmentInteractionListener}. + * TODO: Replace the implementation with code for your data type. + */ +public class MyItemRecyclerViewAdapter extends RecyclerView.Adapter { + + private final List mValues; + private final ItemFragment.OnListFragmentInteractionListener mListener; + + public MyItemRecyclerViewAdapter(List items, ItemFragment.OnListFragmentInteractionListener listener) { + mValues = items; + mListener = listener; + } + + @Override + public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.fragment_item, parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(final ViewHolder holder, int position) { + holder.mItem = mValues.get(position); + holder.Nazwa.setText(mValues.get(position).Nazwa); + holder.Status.setText(mValues.get(position).Status); + holder.Error.setText(mValues.get(position).Error); + holder.State.setText(mValues.get(position).State); + holder.Temperatura.setText(mValues.get(position).Temperatura); + holder.mView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (null != mListener) { + // Notify the active callbacks interface (the activity, if the + // fragment is attached to one) that an item has been selected. + mListener.onListFragmentInteraction(holder.mItem); + } + } + }); + } + + @Override + public int getItemCount() { + return mValues.size(); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + public final View mView; + public final TextView Nazwa; + public final TextView Status; + public final TextView Error; + public final TextView State; + public final TextView Temperatura; + + public DummyContent.DummyItem mItem; + + public ViewHolder(View view) { + super(view); + mView = view; + Nazwa = (TextView) view.findViewById(R.id.idNazwa); + Status = (TextView) view.findViewById(R.id.idStatus); + Error = (TextView) view.findViewById(R.id.idError); + State = (TextView) view.findViewById(R.id.idState); + Temperatura = (TextView) view.findViewById(R.id.idTemperatura); + } + + @Override + public String toString() { + return super.toString() + " '" + Nazwa.getText() + "'"; + } + } +} \ No newline at end of file Index: app/src/main/java/com/kfb/kfbv1/SplashActivity.java =================================================================== --- app/src/main/java/com/kfb/kfbv1/SplashActivity.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ app/src/main/java/com/kfb/kfbv1/SplashActivity.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,29 @@ +package com.kfb.kfbv1; + +import android.content.Context; +import android.content.Intent; +import android.net.wifi.WifiConfiguration; +import android.net.wifi.WifiManager; +import android.os.Bundle; + +import androidx.appcompat.app.AppCompatActivity; + + + +import java.lang.reflect.Method; + +public class SplashActivity extends AppCompatActivity { + + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + startActivity(new Intent(SplashActivity.this, MainActivity.class)); + try { + + Thread.sleep(3000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + finish(); + } + +} \ No newline at end of file Index: app/src/main/java/com/kfb/kfbv1/dummy/DummyContent.java =================================================================== --- app/src/main/java/com/kfb/kfbv1/dummy/DummyContent.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ app/src/main/java/com/kfb/kfbv1/dummy/DummyContent.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,85 @@ +package com.kfb.kfbv1.dummy; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Helper class for providing sample content for user interfaces created by + * Android template wizards. + *

+ * TODO: Replace all uses of this class before publishing your app. + */ +public class DummyContent { + + /** + * An array of sample (dummy) items. + */ + public static final List ITEMS = new ArrayList(); + + /** + * A map of sample (dummy) items, by ID. + */ + public static final Map ITEM_MAP = new HashMap(); + + private static final int COUNT = 4; + + static { + // Add some sample items. + for (int i = 1; i <= COUNT; i++) { + addItem(createDummyItem(i)); + } + } + + private static void addItem(DummyItem item) { + ITEMS.add(item); + ITEM_MAP.put(item.id, item); + } + + private static DummyItem createDummyItem(int position) { + return new DummyItem(String.valueOf(position), "Test1","ON","ERROR","Empty","1","1","1","23.3"); + } + + private static String makeDetails(int position) { + StringBuilder builder = new StringBuilder(); + builder.append("Details about Item: ").append(position); + for (int i = 0; i < position; i++) { + builder.append("\nMore details information here."); + } + return builder.toString(); + } + + /** + * A dummy item representing a piece of content. + */ + public static class DummyItem { + public final String id; + public final String Nazwa; + public final String Status; + public String Error; + public String State; + public final String s1; + public final String s2; + public final String s3; + public String Temperatura; + + public DummyItem(String id, String aNazwa,String aStatus,String aError,String aState,String aS1,String aS2,String aS3,String aTemperatura) { + this.id = id; + this.Nazwa = aNazwa; + this.State = aState; + this.Status = aStatus; + this.Error = aError; + this.s1 =aS1; + this.s2= aS2; + this.s3 = aS3; + this.Temperatura = aTemperatura; + } + + @Override + public String toString() { + return Nazwa; + } + } +} + Index: app/src/main/java/com/kfb/kfbv1/hotspot/ClientScanResult.java =================================================================== --- app/src/main/java/com/kfb/kfbv1/hotspot/ClientScanResult.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ app/src/main/java/com/kfb/kfbv1/hotspot/ClientScanResult.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,48 @@ +package com.kfb.kfbv1.hotspot; + +public class ClientScanResult { + private String IpAddr; + private String HWAddr; + private String Device; + private boolean isReachable; + + public ClientScanResult(String ipAddr, String hWAddr, String device, boolean isReachable) { + super(); + this.IpAddr = ipAddr; + this.HWAddr = hWAddr; + this.Device = device; + this.isReachable = isReachable; + } + + public String getIpAddr() { + return IpAddr; + } + + public void setIpAddr(String ipAddr) { + IpAddr = ipAddr; + } + + public String getHWAddr() { + return HWAddr; + } + + public void setHWAddr(String hWAddr) { + HWAddr = hWAddr; + } + + public String getDevice() { + return Device; + } + + public void setDevice(String device) { + Device = device; + } + + public boolean isReachable() { + return isReachable; + } + + public void setReachable(boolean isReachable) { + this.isReachable = isReachable; + } +} Index: app/src/main/java/com/kfb/kfbv1/hotspot/FinishScanListener.java =================================================================== --- app/src/main/java/com/kfb/kfbv1/hotspot/FinishScanListener.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ app/src/main/java/com/kfb/kfbv1/hotspot/FinishScanListener.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,11 @@ +package com.kfb.kfbv1.hotspot; + +import java.util.ArrayList; + +public interface FinishScanListener { + /** + * Interface called when the scan method finishes. Network operations should not execute on UI thread + * @param clients + */ + public void onFinishScan(ArrayList clients); +} Index: app/src/main/java/com/kfb/kfbv1/hotspot/WIFI_AP_STATE.java =================================================================== --- app/src/main/java/com/kfb/kfbv1/hotspot/WIFI_AP_STATE.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ app/src/main/java/com/kfb/kfbv1/hotspot/WIFI_AP_STATE.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,5 @@ +package com.kfb.kfbv1.hotspot; + +public enum WIFI_AP_STATE { + WIFI_AP_STATE_DISABLING, WIFI_AP_STATE_DISABLED, WIFI_AP_STATE_ENABLING, WIFI_AP_STATE_ENABLED, WIFI_AP_STATE_FAILED +} \ No newline at end of file Index: app/src/main/java/com/kfb/kfbv1/hotspot/WifiApManager.java =================================================================== --- app/src/main/java/com/kfb/kfbv1/hotspot/WifiApManager.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ app/src/main/java/com/kfb/kfbv1/hotspot/WifiApManager.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,215 @@ +package com.kfb.kfbv1.hotspot; +/* + * Copyright 2013 WhiteByte (Nick Russler, Ahmet Yueksektepe). + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.lang.reflect.Method; +import java.net.InetAddress; +import java.util.ArrayList; + +import android.content.Context; +import android.content.Intent; +import android.net.Uri; +import android.net.wifi.WifiConfiguration; +import android.net.wifi.WifiManager; +import android.os.Build; +import android.os.Handler; +import android.provider.Settings; +import android.util.Log; + +public class WifiApManager { + private final WifiManager mWifiManager; + private Context context; + + public WifiApManager(Context context) { + this.context = context; + mWifiManager = (WifiManager) this.context.getSystemService(Context.WIFI_SERVICE); + } + + /** + * Show write permission settings page to user if necessary or forced + * @param force show settings page even when rights are already granted + */ + public void showWritePermissionSettings(boolean force) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (force || !Settings.System.canWrite(this.context)) { + Intent intent = new Intent(android.provider.Settings.ACTION_MANAGE_WRITE_SETTINGS); + intent.setData(Uri.parse("package:" + this.context.getPackageName())); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + this.context.startActivity(intent); + } + } + } + + /** + * Start AccessPoint mode with the specified + * configuration. If the radio is already running in + * AP mode, update the new configuration + * Note that starting in access point mode disables station + * mode operation + * + * @param wifiConfig SSID, security and channel details as part of WifiConfiguration + * @return {@code true} if the operation succeeds, {@code false} otherwise + */ + public boolean setWifiApEnabled(WifiConfiguration wifiConfig, boolean enabled) { + try { + if (enabled) { // disable WiFi in any case + mWifiManager.setWifiEnabled(false); + } + + Method method = mWifiManager.getClass().getMethod("setWifiApEnabled", WifiConfiguration.class, boolean.class); + return (Boolean) method.invoke(mWifiManager, wifiConfig, enabled); + } catch (Exception e) { + Log.e(this.getClass().toString(), "", e); + return false; + } + } + + /** + * Gets the Wi-Fi enabled state. + * + * @return {@link WIFI_AP_STATE} + * @see #isWifiApEnabled() + */ + public WIFI_AP_STATE getWifiApState() { + try { + Method method = mWifiManager.getClass().getMethod("getWifiApState"); + + int tmp = ((Integer) method.invoke(mWifiManager)); + + // Fix for Android 4 + if (tmp >= 10) { + tmp = tmp - 10; + } + + return WIFI_AP_STATE.class.getEnumConstants()[tmp]; + } catch (Exception e) { + Log.e(this.getClass().toString(), "", e); + return WIFI_AP_STATE.WIFI_AP_STATE_FAILED; + } + } + + /** + * Return whether Wi-Fi AP is enabled or disabled. + * + * @return {@code true} if Wi-Fi AP is enabled + * @hide Dont open yet + * @see #getWifiApState() + */ + public boolean isWifiApEnabled() { + return getWifiApState() == WIFI_AP_STATE.WIFI_AP_STATE_ENABLED; + } + + /** + * Gets the Wi-Fi AP Configuration. + * + * @return AP details in {@link WifiConfiguration} + */ + public WifiConfiguration getWifiApConfiguration() { + try { + Method method = mWifiManager.getClass().getMethod("getWifiApConfiguration"); + return (WifiConfiguration) method.invoke(mWifiManager); + } catch (Exception e) { + Log.e(this.getClass().toString(), "", e); + return null; + } + } + + /** + * Sets the Wi-Fi AP Configuration. + * + * @return {@code true} if the operation succeeded, {@code false} otherwise + */ + public boolean setWifiApConfiguration(WifiConfiguration wifiConfig) { + try { + Method method = mWifiManager.getClass().getMethod("setWifiApConfiguration", WifiConfiguration.class); + return (Boolean) method.invoke(mWifiManager, wifiConfig); + } catch (Exception e) { + Log.e(this.getClass().toString(), "", e); + return false; + } + } + + /** + * Gets a list of the clients connected to the Hotspot, reachable timeout is 300 + * + * @param onlyReachables {@code false} if the list should contain unreachable (probably disconnected) clients, {@code true} otherwise + * @param finishListener, Interface called when the scan method finishes + */ + public void getClientList(boolean onlyReachables, FinishScanListener finishListener) { + getClientList(onlyReachables, 300, finishListener); + } + + /** + * Gets a list of the clients connected to the Hotspot + * + * @param onlyReachables {@code false} if the list should contain unreachable (probably disconnected) clients, {@code true} otherwise + * @param reachableTimeout Reachable Timout in miliseconds + * @param finishListener, Interface called when the scan method finishes + */ + public void getClientList(final boolean onlyReachables, final int reachableTimeout, final FinishScanListener finishListener) { + Runnable runnable = new Runnable() { + public void run() { + + BufferedReader br = null; + final ArrayList result = new ArrayList(); + + try { + br = new BufferedReader(new FileReader("/proc/net/arp")); + String line; + while ((line = br.readLine()) != null) { + String[] splitted = line.split(" +"); + + if ((splitted != null) && (splitted.length >= 4)) { + // Basic sanity check + String mac = splitted[3]; + + if (mac.matches("..:..:..:..:..:..")) { + boolean isReachable = InetAddress.getByName(splitted[0]).isReachable(reachableTimeout); + + if (!onlyReachables || isReachable) { + result.add(new ClientScanResult(splitted[0], splitted[3], splitted[5], isReachable)); + } + } + } + } + } catch (Exception e) { + Log.e(this.getClass().toString(), e.toString()); + } finally { + try { + br.close(); + } catch (IOException e) { + Log.e(this.getClass().toString(), e.getMessage()); + } + } + + // Get a handler that can be used to post to the main thread + Handler mainHandler = new Handler(context.getMainLooper()); + Runnable myRunnable = new Runnable() { + @Override + public void run() { + finishListener.onFinishScan(result); + } + }; + mainHandler.post(myRunnable); + } + }; + + Thread mythread = new Thread(runnable); + mythread.start(); + } +} Index: app/src/main/java/com/kfb/kfbv1/model/KfbGate.java =================================================================== --- app/src/main/java/com/kfb/kfbv1/model/KfbGate.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ app/src/main/java/com/kfb/kfbv1/model/KfbGate.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,66 @@ +package com.kfb.kfbv1.model; + +import java.util.ArrayList; + +public class KfbGate { + private String mName; + private String mAdres; + private String mMaxT; + private String mStatus; + private String mError; + + private ArrayList mMeasure; + + public void setmName(String mName) { + this.mName = mName; + } + + public void setmAdres(String mAdres) { + this.mAdres = mAdres; + } + + public String getmAdres() { + return mAdres; + } + + public void setmMeasure(ArrayList mMeasure) { + this.mMeasure = mMeasure; + } + + public String getmName() { + return mName; + } + + public ArrayList getmMeasure() { + return mMeasure; + } + + public KfbGate() + { + mMeasure = new ArrayList(); + } + + public void setmMaxT(String mMaxT) { + this.mMaxT = mMaxT; + } + + public String getmError() { + return mError; + } + + public void setmError(String mError) { + this.mError = mError; + } + + public void setmStatus(String mStatus) { + this.mStatus = mStatus; + } + + public String getmMaxT() { + return mMaxT; + } + + public String getmStatus() { + return mStatus; + } +} Index: app/src/main/java/com/kfb/kfbv1/model/KfbGates.java =================================================================== --- app/src/main/java/com/kfb/kfbv1/model/KfbGates.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ app/src/main/java/com/kfb/kfbv1/model/KfbGates.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,31 @@ +package com.kfb.kfbv1.model; + +import java.util.ArrayList; + +public class KfbGates { + private int mSize; + private ArrayList mGate; + + public KfbGates() + { + mGate = new ArrayList(); + mSize = 0; + } + + public void AddGate(KfbGate aGate){ + mGate.add(aGate); + mSize++; + } + + public void setmGate(ArrayList mGate) { + this.mGate = mGate; + } + + public int getmSize() { + return mSize; + } + + public ArrayList getmGate() { + return mGate; + } +} Index: app/src/main/java/com/kfb/kfbv1/model/KfbHttpRequest.java =================================================================== --- app/src/main/java/com/kfb/kfbv1/model/KfbHttpRequest.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ app/src/main/java/com/kfb/kfbv1/model/KfbHttpRequest.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,92 @@ +package com.kfb.kfbv1.model; + +import android.content.Context; +import android.os.AsyncTask; +import android.util.Log; +import android.widget.Toast; + +import com.loopj.android.http.AsyncHttpClient; +import com.loopj.android.http.AsyncHttpResponseHandler; +import com.loopj.android.http.ResponseHandlerInterface; +import com.loopj.android.http.SyncHttpClient; + +import java.io.ByteArrayOutputStream; +import java.io.EOFException; +import java.io.IOException; +import java.net.HttpURLConnection; +import java.net.URL; + +import javax.net.ssl.HttpsURLConnection; + +import cz.msebera.android.httpclient.Header; + +public class KfbHttpRequest { + private KfbGate mGate; + public String outS; + private SyncHttpClient client; + + public String getTest(String aUrl) + { + client = new SyncHttpClient(); + try { + String uri = aUrl; + client.get(uri, new AsyncHttpResponseHandler() { + @Override + public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) { + outS = new String(responseBody); + KfbModel.getData().tekser =outS; + KfbModel.getData().error = false; + //KfbModel.getData().progresok=true; + + // KfbModel.getData().textViewout.setText(outS); + } + + @Override + public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) { + outS = "ERROR"+ error.getMessage(); + KfbModel.getData().tekser =outS; + KfbModel.getData().error = true; + // KfbModel.getData().progresok=true; + + // KfbModel.getData().textViewout.setText(outS); + + } + }); + return outS; + }catch (Exception e) + { + Log.e("HttpClient",e.getMessage()); + return ""; + } + } + public void getRequest(KfbGate aGate) { + mGate = aGate; + + client = new SyncHttpClient(); + try { + String uri = aGate.getmAdres(); + client.get(uri, new AsyncHttpResponseHandler() { + @Override + public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) { + outS = new String(responseBody); + KfbModel.getData().tekser =outS; + KfbModel.getData().error = false; + } + + @Override + public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) { + outS = "ERROR"+ error.getMessage(); + KfbModel.getData().tekser =outS; + KfbModel.getData().error = true; + } + }); + + + }catch (Exception e) + { + Log.e("HttpClient",e.getMessage()); + } + } +} + + Index: app/src/main/java/com/kfb/kfbv1/model/KfbMeasure.java =================================================================== --- app/src/main/java/com/kfb/kfbv1/model/KfbMeasure.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ app/src/main/java/com/kfb/kfbv1/model/KfbMeasure.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,5 @@ +package com.kfb.kfbv1.model; + +public class KfbMeasure { + private float mTemp; +} Index: app/src/main/java/com/kfb/kfbv1/model/KfbModel.java =================================================================== --- app/src/main/java/com/kfb/kfbv1/model/KfbModel.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ app/src/main/java/com/kfb/kfbv1/model/KfbModel.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,50 @@ +package com.kfb.kfbv1.model; + +import android.os.Handler; +import android.widget.ProgressBar; +import android.widget.TextView; + +import com.kfb.kfbv1.KfbProgrsBar; +import com.kfb.kfbv1.MyItemRecyclerViewAdapter; + + + +public class KfbModel { + private static KfbModel mmodel; + + public static KfbModel getData() + { + if(mmodel==null) + { + mmodel = new KfbModel(); + } + return mmodel; + } + + private KfbModel() + { + mGates = new KfbGates(); + } + // data private + private KfbGates mGates; + private MyItemRecyclerViewAdapter mAdapter; + // data + public boolean sendHttp; + public KfbProgrsBar progresBar; + public String tekser; + public boolean error; + public Handler handler; + public String url; + + public MyItemRecyclerViewAdapter getmAdapter() { + return mAdapter; + } + + public void setmAdapter(MyItemRecyclerViewAdapter mAdapter) { + this.mAdapter = mAdapter; + } + + public KfbGates getGates(){ + return mGates; + } +} Index: app/src/main/java/com/kfb/kfbv1/model/KfbParser.java =================================================================== --- app/src/main/java/com/kfb/kfbv1/model/KfbParser.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ app/src/main/java/com/kfb/kfbv1/model/KfbParser.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,18 @@ +package com.kfb.kfbv1.model; + +public class KfbParser { + public KfbGate dataParser(String aData,KfbGate aGate) + { + KfbGate k = aGate; + int p = aData.lastIndexOf("Tmax ="); + p = p+6; + String t = aData.substring(p ,p+5); + k.setmMaxT(t); + + p = aData.lastIndexOf("status:"); + p=p+7; + t = aData.substring(p ,p+6); + k.setmStatus(t); + return k; + } +} Index: app/src/main/java/com/kfb/kfbv1/model/KfbTask.java =================================================================== --- app/src/main/java/com/kfb/kfbv1/model/KfbTask.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ app/src/main/java/com/kfb/kfbv1/model/KfbTask.java (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,61 @@ +package com.kfb.kfbv1.model; + +import android.os.Handler; +import android.os.Message; +import android.view.View; +import android.widget.TextView; + +import com.kfb.kfbv1.R; + +public class KfbTask implements Runnable { + @Override + public void run() { + Handler handler = KfbModel.getData().handler; + KfbHttpRequest HttpKfb = new KfbHttpRequest(); + HttpKfb.getTest(KfbModel.getData().url); + if(KfbModel.getData().tekser!=null) + { + KfbParser p = new KfbParser(); + // if(KfbModel.getData().error==false) { + // p.dataParser(KfbModel.getData().tekser, KfbModel.getData().getGates().getmGate().get(0)); + // } + Message msg = handler.obtainMessage(); + msg.what = 1; + msg.obj = "tekst"; + msg.arg1 = 1; + handler.sendMessage(msg); + } + + + while(KfbModel.getData().sendHttp==true) + { + KfbParser p = new KfbParser(); + for (int i = 0 ;i + + + Index: app/src/main/res/drawable-v24/circular_progress_bar.xml =================================================================== --- app/src/main/res/drawable-v24/circular_progress_bar.xml (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ app/src/main/res/drawable-v24/circular_progress_bar.xml (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,17 @@ + + + + + + \ No newline at end of file Index: app/src/main/res/drawable-v24/ic_launcher_foreground.xml =================================================================== --- app/src/main/res/drawable-v24/ic_launcher_foreground.xml (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ app/src/main/res/drawable-v24/ic_launcher_foreground.xml (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file Index: app/src/main/res/drawable/ic_launcher_background.xml =================================================================== --- app/src/main/res/drawable/ic_launcher_background.xml (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ app/src/main/res/drawable/ic_launcher_background.xml (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: app/src/main/res/drawable/splash.xml =================================================================== --- app/src/main/res/drawable/splash.xml (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ app/src/main/res/drawable/splash.xml (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,7 @@ + + + + Index: app/src/main/res/layout/activity_gate.xml =================================================================== --- app/src/main/res/layout/activity_gate.xml (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ app/src/main/res/layout/activity_gate.xml (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file Index: app/src/main/res/layout/activity_main.xml =================================================================== --- app/src/main/res/layout/activity_main.xml (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) +++ app/src/main/res/layout/activity_main.xml (revision 78e9338ac88fbd90d19c3607de90adc1952b06d1) @@ -0,0 +1,123 @@ + + + + + + + + + + + +