diff options
author | Adnan Begovic <adnan@cyngn.com> | 2015-08-04 16:45:56 -0700 |
---|---|---|
committer | Adnan Begovic <adnan@cyngn.com> | 2015-08-04 17:03:11 -0700 |
commit | d7be1ca88d40a3d9a3320f3c3c6c58e98d3a08bb (patch) | |
tree | 8404a47d774cc4c9b4dae6ebace0fea37af26c0c /samples | |
parent | 8481cec918f99e80ef60eee52d07d83b0d76129f (diff) | |
download | vendor_cmsdk-d7be1ca88d40a3d9a3320f3c3c6c58e98d3a08bb.zip vendor_cmsdk-d7be1ca88d40a3d9a3320f3c3c6c58e98d3a08bb.tar.gz vendor_cmsdk-d7be1ca88d40a3d9a3320f3c3c6c58e98d3a08bb.tar.bz2 |
cmsdk: Add sample Profiles application.
Change-Id: I504f6c278055564a711a9bae18065f3d7989ccdd
Diffstat (limited to 'samples')
-rw-r--r-- | samples/profiles/Android.mk | 11 | ||||
-rw-r--r-- | samples/profiles/AndroidManifest.xml | 19 | ||||
-rw-r--r-- | samples/profiles/res/drawable-hdpi/ic_launcher.png | bin | 0 -> 9397 bytes | |||
-rw-r--r-- | samples/profiles/res/drawable-ldpi/ic_launcher.png | bin | 0 -> 2729 bytes | |||
-rw-r--r-- | samples/profiles/res/drawable-mdpi/ic_launcher.png | bin | 0 -> 5237 bytes | |||
-rw-r--r-- | samples/profiles/res/drawable-xhdpi/ic_launcher.png | bin | 0 -> 14383 bytes | |||
-rw-r--r-- | samples/profiles/res/layout/main.xml | 19 | ||||
-rw-r--r-- | samples/profiles/res/values/strings.xml | 5 | ||||
-rw-r--r-- | samples/profiles/src/org/cyanogenmod/samples/profiles/MainActivity.java | 137 |
9 files changed, 191 insertions, 0 deletions
diff --git a/samples/profiles/Android.mk b/samples/profiles/Android.mk new file mode 100644 index 0000000..1cdb0c2 --- /dev/null +++ b/samples/profiles/Android.mk @@ -0,0 +1,11 @@ +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_STATIC_JAVA_LIBRARIES := \ + org.cyanogenmod.platform.sdk + +LOCAL_SRC_FILES := $(call all-subdir-java-files) + +LOCAL_PACKAGE_NAME := CMProfiles + +include $(BUILD_PACKAGE)
\ No newline at end of file diff --git a/samples/profiles/AndroidManifest.xml b/samples/profiles/AndroidManifest.xml new file mode 100644 index 0000000..6f1e673 --- /dev/null +++ b/samples/profiles/AndroidManifest.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="org.cyanogenmod.samples.profiles" + android:versionCode="1" + android:versionName="1.0"> + + <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> + <uses-permission android:name="android.permission.WRITE_SETTINGS" /> + + <application android:label="@string/app_name" android:icon="@drawable/ic_launcher"> + <activity android:name="MainActivity" + android:label="@string/app_name"> + <intent-filter> + <action android:name="android.intent.action.MAIN"/> + <category android:name="android.intent.category.LAUNCHER"/> + </intent-filter> + </activity> + </application> +</manifest> diff --git a/samples/profiles/res/drawable-hdpi/ic_launcher.png b/samples/profiles/res/drawable-hdpi/ic_launcher.png Binary files differnew file mode 100644 index 0000000..96a442e --- /dev/null +++ b/samples/profiles/res/drawable-hdpi/ic_launcher.png diff --git a/samples/profiles/res/drawable-ldpi/ic_launcher.png b/samples/profiles/res/drawable-ldpi/ic_launcher.png Binary files differnew file mode 100644 index 0000000..9923872 --- /dev/null +++ b/samples/profiles/res/drawable-ldpi/ic_launcher.png diff --git a/samples/profiles/res/drawable-mdpi/ic_launcher.png b/samples/profiles/res/drawable-mdpi/ic_launcher.png Binary files differnew file mode 100644 index 0000000..359047d --- /dev/null +++ b/samples/profiles/res/drawable-mdpi/ic_launcher.png diff --git a/samples/profiles/res/drawable-xhdpi/ic_launcher.png b/samples/profiles/res/drawable-xhdpi/ic_launcher.png Binary files differnew file mode 100644 index 0000000..71c6d76 --- /dev/null +++ b/samples/profiles/res/drawable-xhdpi/ic_launcher.png diff --git a/samples/profiles/res/layout/main.xml b/samples/profiles/res/layout/main.xml new file mode 100644 index 0000000..ea0ac53 --- /dev/null +++ b/samples/profiles/res/layout/main.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="vertical" + android:layout_width="fill_parent" + android:layout_height="fill_parent" + android:gravity="center_horizontal" + > + <Button + android:id="@+id/create_bluetooth_on_wifi_trigger_connect" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/bluetooth_on_wifi_trigger"/> + + <TextView + android:id="@+id/create_bt_on_wifi_status" + android:layout_width="match_parent" + android:layout_height="300dp" /> +</LinearLayout> + diff --git a/samples/profiles/res/values/strings.xml b/samples/profiles/res/values/strings.xml new file mode 100644 index 0000000..d97a57b --- /dev/null +++ b/samples/profiles/res/values/strings.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <string name="app_name">Profiles Sample</string> + <string name="bluetooth_on_wifi_trigger">Create profile that triggers on top AP from WifiManager</string> +</resources> diff --git a/samples/profiles/src/org/cyanogenmod/samples/profiles/MainActivity.java b/samples/profiles/src/org/cyanogenmod/samples/profiles/MainActivity.java new file mode 100644 index 0000000..1dffe40 --- /dev/null +++ b/samples/profiles/src/org/cyanogenmod/samples/profiles/MainActivity.java @@ -0,0 +1,137 @@ +/* + * Copyright (C) 2015 The CyanogenMod Project + * + * 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. + */ + +package org.cyanogenmod.samples.profiles; + +import android.app.Activity; +import android.content.Context; +import android.net.wifi.WifiConfiguration; +import android.net.wifi.WifiManager; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.TextView; +import cyanogenmod.app.Profile; +import cyanogenmod.app.ProfileManager; +import cyanogenmod.profiles.ConnectionSettings; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by adnan on 8/4/15. + */ +public class MainActivity extends Activity implements View.OnClickListener { + private ProfileManager mProfileManager; + private WifiManager mWifiManager; + private Profile mProfile; + private List<WifiTrigger> mTriggers = new ArrayList<WifiTrigger>(); + private Button mProfileButton; + private TextView mTextView; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.main); + + mProfileManager = ProfileManager.getInstance(this); + mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); + + populateWifiTriggerList(); + + mProfileButton = (Button) findViewById(R.id.create_bluetooth_on_wifi_trigger_connect); + mTextView = (TextView) findViewById(R.id.create_bt_on_wifi_status); + mProfileButton.setOnClickListener(this); + } + + @Override + public void onClick(View view) { + mProfile = new Profile("Enable Bluetooth on WiFi connect"); + mProfile.setProfileType(Profile.Type.TOGGLE); + + final String triggerId; + final String triggerName; + final int triggerType; + final int triggerState; + + WifiTrigger trigger = mTriggers.get(0); // get first AP, doesn't matter what it is + + // Populate the arguments for the ProfileTrigger + triggerId = trigger.getSSID(); + triggerName = trigger.getTitle(); + triggerType = Profile.TriggerType.WIFI; // This is a wifi trigger + triggerState = Profile.TriggerState.ON_CONNECT; // On Connect of this, trigger + + Profile.ProfileTrigger profileTrigger = + new Profile.ProfileTrigger(triggerType, triggerId, triggerState, triggerName); + + ConnectionSettings connectionSettings = new ConnectionSettings( + ConnectionSettings.PROFILE_CONNECTION_BLUETOOTH, + ConnectionSettings.BooleanState.STATE_ENABLED, true); + + mProfile.setConnectionSettings(connectionSettings); + mProfile.setTrigger(profileTrigger); + + mProfileManager.addProfile(mProfile); + + mTextView.setText("Set up for AP " + triggerId + "\n" + + "With state pending on " + triggerState); + } + + private void populateWifiTriggerList() { + final List<WifiConfiguration> configs = mWifiManager.getConfiguredNetworks(); + + if (configs != null) { + for (WifiConfiguration config : configs) { + WifiTrigger wifiTrigger = new WifiTrigger(config); + mTriggers.add(wifiTrigger); + } + } + } + + public static class WifiTrigger { + public String mSSID; + public WifiConfiguration mConfig; + + public WifiTrigger(WifiConfiguration config) { + mConfig = config; + loadConfig(config); + } + + public String getSSID() { + return mSSID; + } + + public String getTitle() { + return mSSID; + } + + private void loadConfig(WifiConfiguration config) { + mSSID = (config.SSID == null ? "" : removeDoubleQuotes(config.SSID)); + mConfig = config; + } + + public static String removeDoubleQuotes(String string) { + final int length = string.length(); + if (length >= 2) { + if (string.startsWith("\"") && string.endsWith("\"")) { + return string.substring(1, length - 1); + } + } + return string; + } + } +} |