initial version
This commit is contained in:
49
_android/AndroidManifest.xml
Normal file
49
_android/AndroidManifest.xml
Normal file
@@ -0,0 +1,49 @@
|
||||
<?xml version="1.0"?>
|
||||
<manifest package="java.indoor" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.0" android:versionCode="1" android:installLocation="auto">
|
||||
|
||||
<uses-sdk android:minSdkVersion="16"/>
|
||||
|
||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
|
||||
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
|
||||
<uses-permission android:name="android.permission.BLUETOOTH"/>
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK"/>
|
||||
<uses-permission android:name="android.permission.BODY_SENSORS"/>
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
|
||||
|
||||
<supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/>
|
||||
|
||||
<application android:name="org.qtproject.qt5.android.bindings.QtApplication" android:label="@string/app_name">
|
||||
|
||||
<activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|locale|fontScale|keyboard|keyboardHidden|navigation" android:name="our.java.stuff.MyActivity" android:label="TEST" android:screenOrientation="unspecified">
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
</intent-filter>
|
||||
|
||||
<meta-data android:name="android.app.lib_name" android:value="-- %%INSERT_APP_LIB_NAME%% --"/>
|
||||
<meta-data android:name="android.app.qt_sources_resource_id" android:resource="@array/qt_sources"/>
|
||||
<meta-data android:name="android.app.repository" android:value="default"/>
|
||||
<meta-data android:name="android.app.qt_libs_resource_id" android:resource="@array/qt_libs"/>
|
||||
<meta-data android:name="android.app.bundled_libs_resource_id" android:resource="@array/bundled_libs"/>
|
||||
<meta-data android:name="android.app.bundle_local_qt_libs" android:value="-- %%BUNDLE_LOCAL_QT_LIBS%% --"/>
|
||||
<meta-data android:name="android.app.bundled_in_lib_resource_id" android:resource="@array/bundled_in_lib"/>
|
||||
<meta-data android:name="android.app.bundled_in_assets_resource_id" android:resource="@array/bundled_in_assets"/>
|
||||
<meta-data android:name="android.app.use_local_qt_libs" android:value="-- %%USE_LOCAL_QT_LIBS%% --"/>
|
||||
<meta-data android:name="android.app.libs_prefix" android:value="/data/local/tmp/qt/"/>
|
||||
<meta-data android:name="android.app.load_local_libs" android:value="-- %%INSERT_LOCAL_LIBS%% --"/>
|
||||
<meta-data android:name="android.app.load_local_jars" android:value="-- %%INSERT_LOCAL_JARS%% --"/>
|
||||
<meta-data android:name="android.app.static_init_classes" android:value="-- %%INSERT_INIT_CLASSES%% --"/>
|
||||
<meta-data android:value="@string/ministro_not_found_msg" android:name="android.app.ministro_not_found_msg"/>
|
||||
<meta-data android:value="@string/ministro_needed_msg" android:name="android.app.ministro_needed_msg"/>
|
||||
<meta-data android:value="@string/fatal_error_msg" android:name="android.app.fatal_error_msg"/>
|
||||
</activity>
|
||||
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
23
_android/src/MyActivity.java
Normal file
23
_android/src/MyActivity.java
Normal file
@@ -0,0 +1,23 @@
|
||||
package our.java.stuff;
|
||||
|
||||
import android.os.Bundle;
|
||||
import org.qtproject.qt5.android.bindings.QtActivity;
|
||||
|
||||
public class MyActivity extends QtActivity {
|
||||
|
||||
public static MyActivity act;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedState) {
|
||||
MyActivity.act = this;
|
||||
super.onCreate(savedState);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
MyActivity.act = null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
101
_android/src/WiFi.java
Normal file
101
_android/src/WiFi.java
Normal file
@@ -0,0 +1,101 @@
|
||||
package java.indoor;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.net.wifi.ScanResult;
|
||||
import android.net.wifi.WifiManager;
|
||||
import android.os.Debug;
|
||||
import android.util.Log;
|
||||
import java.util.List;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
|
||||
public class WiFi {
|
||||
|
||||
private static Activity act;
|
||||
private static WifiManager manager;
|
||||
private static BroadcastReceiver receiver;
|
||||
|
||||
|
||||
|
||||
/** called when a scan is completed successfully */
|
||||
public static native void onScanComplete(final byte[] result);
|
||||
|
||||
/**
|
||||
* start WiFi scanning in the background.
|
||||
* will call onScanComplete() once a scan is available
|
||||
*/
|
||||
public static int start() {
|
||||
|
||||
Log.d("wifi", "start()");
|
||||
|
||||
MyActivity act = MyActivity.act;
|
||||
manager = (WifiManager) act.getSystemService(Context.WIFI_SERVICE);
|
||||
|
||||
reset();
|
||||
|
||||
WiFi.receiver = new BroadcastReceiver() {
|
||||
public final void onReceive(final Context context, final Intent intent) {
|
||||
final byte[] result = serialize(manager.getScanResults());
|
||||
WiFi.onScanComplete(result);
|
||||
triggerOneScan();
|
||||
}
|
||||
};
|
||||
|
||||
// register scan callback
|
||||
act.registerReceiver(WiFi.receiver, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
|
||||
|
||||
// start the first scan
|
||||
triggerOneScan();
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
/** convert the given scan-result to a binary byte[] representation */
|
||||
private static byte[] serialize(final List<ScanResult> lst) {
|
||||
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
try {
|
||||
for (final ScanResult res : lst) {
|
||||
baos.write(res.BSSID.getBytes());
|
||||
baos.write((byte)res.level);
|
||||
baos.write((byte)0);
|
||||
baos.write((byte)0);
|
||||
}
|
||||
} catch (final Exception e) {;}
|
||||
return baos.toByteArray();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/** reset the WiFi subsystem (better scanning) */
|
||||
private static void reset() {
|
||||
WiFi.manager.disconnect();
|
||||
WiFi.manager.createWifiLock(manager.WIFI_MODE_SCAN_ONLY, "Indoor");
|
||||
//WiFi.manager.setWifiEnabled(false);
|
||||
//WiFi.manager.setWifiEnabled(true);
|
||||
WiFi.manager.disconnect();
|
||||
WiFi.manager.disconnect();
|
||||
WiFi.manager.disconnect();
|
||||
WiFi.manager.disconnect();
|
||||
WiFi.manager.disconnect();
|
||||
WiFi.manager.disconnect();
|
||||
}
|
||||
|
||||
/** try to trigger one scan process */
|
||||
private static void triggerOneScan() {
|
||||
|
||||
Log.d("wifi", "triggerOneScan()");
|
||||
|
||||
try {
|
||||
if(!manager.startScan()) {throw new RuntimeException("Cant start WiFi!");}
|
||||
}catch (final Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user