diff options
author | Chris Sarbora <sarbs@cyngn.com> | 2015-08-06 14:14:47 -0700 |
---|---|---|
committer | Clark Scheff <clark@cyngn.com> | 2015-12-18 16:13:51 -0800 |
commit | b9d7733a67b7790dcf19d4b52af4d60c9becb8f1 (patch) | |
tree | 88bfbccf31e6a4786233925a4f5eaa4202122aeb /samples | |
parent | 9691d4224c35390ab1a53792f0cb3b1dfb6679b6 (diff) | |
download | lineage-sdk-b9d7733a67b7790dcf19d4b52af4d60c9becb8f1.tar.gz lineage-sdk-b9d7733a67b7790dcf19d4b52af4d60c9becb8f1.tar.bz2 lineage-sdk-b9d7733a67b7790dcf19d4b52af4d60c9becb8f1.zip |
External views for cm13
Initial ExternalViewProvider
Change-Id: Ib35d79d3ae01d2e1a98020c5e65e4fbe50d2d322
Fill out methods and run everything on main thread
Change-Id: I05dd1bce5c24057101cd85656d28b01e6681434a
Fix aidl
Change-Id: Ie4b9a4463fdea37a0c5d657ffbc8796d51b57303
Add sample provider
Change-Id: I51b73302f85927aba2e9ea30ce47d6958af8e451
Create window and view earlier and only once
Change-Id: I60264b3c2de302f6f628320f436ac2aeb39de42c
visibility
Change-Id: I6ed2d6431c5aec9d4959a51828c42a700aabbd22
Add logging
Change-Id: I224587bcdfd1ff08673a618c5e45fef384041b8b
Add external view
Change-Id: Ic7f1ba96857239ac0fa43777f7d637716b7aead7
Resource fixes
Change-Id: I75324900d36a465575338c8b0ec9cc568ea50b9a
Add view host
Change-Id: Ief57371563feca707f420a509827c78c48bedf9c
Such hacks :\
Change-Id: I11ff460e7e7fed9cb14531ec3fb4699a37021ee0
Use a real window
Change-Id: Ie79f8188beaa871c6b8c96303c3221cdd7352fc6
Make api able to handle multiple instances of provided views
Change-Id: I185a8950aa577f920eaf7582c53f3316b88765c8
Ensure attribute set is passed to constructor
Change-Id: I9ebb4e8b0f7538ea5d0e7da179b1f1df812532b1
Add clip rect support
Change-Id: I23ac08b9e9e1e07e72bbf761ede1de87f4e4b084
Use final clipRect, instead of member
Change-Id: I2fa5f6ff30adf30fc0fe10f9fac1869ab4c03904
Diffstat (limited to 'samples')
23 files changed, 410 insertions, 0 deletions
diff --git a/samples/viewhost/.gitignore b/samples/viewhost/.gitignore new file mode 100644 index 00000000..9c4de582 --- /dev/null +++ b/samples/viewhost/.gitignore @@ -0,0 +1,7 @@ +.gradle +/local.properties +/.idea/workspace.xml +/.idea/libraries +.DS_Store +/build +/captures diff --git a/samples/viewhost/Android.mk b/samples/viewhost/Android.mk new file mode 100644 index 00000000..67e82a37 --- /dev/null +++ b/samples/viewhost/Android.mk @@ -0,0 +1,24 @@ +# 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. +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_STATIC_JAVA_LIBRARIES := \ + org.cyanogenmod.platform.sdk + +LOCAL_SRC_FILES := $(call all-java-files-under, src/) + +LOCAL_PACKAGE_NAME := CMExternalViewHost + +include $(BUILD_PACKAGE) diff --git a/samples/viewhost/AndroidManifest.xml b/samples/viewhost/AndroidManifest.xml new file mode 100644 index 00000000..1e30cf05 --- /dev/null +++ b/samples/viewhost/AndroidManifest.xml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + 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. +--> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="org.cyanogenmod.samples.extviewhost" > + + <uses-sdk android:minSdkVersion="23" android:targetSdkVersion="23" /> + + <application + android:allowBackup="true" + android:icon="@mipmap/ic_launcher" + android:label="@string/app_name" + android:theme="@style/AppTheme" > + <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/viewhost/res/layout/activity_main.xml b/samples/viewhost/res/layout/activity_main.xml new file mode 100644 index 00000000..a21a338d --- /dev/null +++ b/samples/viewhost/res/layout/activity_main.xml @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + 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. +--> +<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:paddingLeft="@dimen/activity_horizontal_margin" + android:paddingRight="@dimen/activity_horizontal_margin" + android:paddingTop="@dimen/activity_vertical_margin" + android:paddingBottom="@dimen/activity_vertical_margin"> + + <LinearLayout + android:id="@+id/root" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="match_parent"> + <cyanogenmod.externalviews.ExternalView + android:id="@+id/external_view" + android:layout_width="match_parent" + android:layout_height="200dp"/> + <View + android:layout_width="match_parent" + android:layout_height="200dp" + android:background="#FF0000"/> + <View + android:layout_width="match_parent" + android:layout_height="200dp" + android:background="#00FF00"/> + <View + android:layout_width="match_parent" + android:layout_height="200dp" + android:background="#0000FF"/> + </LinearLayout> + +</ScrollView>
\ No newline at end of file diff --git a/samples/viewhost/res/mipmap-hdpi/ic_launcher.png b/samples/viewhost/res/mipmap-hdpi/ic_launcher.png Binary files differnew file mode 100644 index 00000000..cde69bcc --- /dev/null +++ b/samples/viewhost/res/mipmap-hdpi/ic_launcher.png diff --git a/samples/viewhost/res/mipmap-mdpi/ic_launcher.png b/samples/viewhost/res/mipmap-mdpi/ic_launcher.png Binary files differnew file mode 100644 index 00000000..c133a0cb --- /dev/null +++ b/samples/viewhost/res/mipmap-mdpi/ic_launcher.png diff --git a/samples/viewhost/res/mipmap-xhdpi/ic_launcher.png b/samples/viewhost/res/mipmap-xhdpi/ic_launcher.png Binary files differnew file mode 100644 index 00000000..bfa42f0e --- /dev/null +++ b/samples/viewhost/res/mipmap-xhdpi/ic_launcher.png diff --git a/samples/viewhost/res/mipmap-xxhdpi/ic_launcher.png b/samples/viewhost/res/mipmap-xxhdpi/ic_launcher.png Binary files differnew file mode 100644 index 00000000..324e72cd --- /dev/null +++ b/samples/viewhost/res/mipmap-xxhdpi/ic_launcher.png diff --git a/samples/viewhost/res/values-v21/styles.xml b/samples/viewhost/res/values-v21/styles.xml new file mode 100644 index 00000000..9712f4b5 --- /dev/null +++ b/samples/viewhost/res/values-v21/styles.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + 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. +--> +<resources> + <style name="AppTheme" parent="android:Theme.Material.Light"> + </style> +</resources> diff --git a/samples/viewhost/res/values-w820dp/dimens.xml b/samples/viewhost/res/values-w820dp/dimens.xml new file mode 100644 index 00000000..4784b6fd --- /dev/null +++ b/samples/viewhost/res/values-w820dp/dimens.xml @@ -0,0 +1,21 @@ +<!-- + 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. +--> +<resources> + <!-- Example customization of dimensions originally defined in res/values/dimens.xml + (such as screen margins) for screens with more than 820dp of available width. This + would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). --> + <dimen name="activity_horizontal_margin">64dp</dimen> +</resources> diff --git a/samples/viewhost/res/values/dimens.xml b/samples/viewhost/res/values/dimens.xml new file mode 100644 index 00000000..d9dcc26b --- /dev/null +++ b/samples/viewhost/res/values/dimens.xml @@ -0,0 +1,20 @@ +<!-- + 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. +--> +<resources> + <!-- Default screen margins, per the Android Design guidelines. --> + <dimen name="activity_horizontal_margin">16dp</dimen> + <dimen name="activity_vertical_margin">16dp</dimen> +</resources> diff --git a/samples/viewhost/res/values/strings.xml b/samples/viewhost/res/values/strings.xml new file mode 100644 index 00000000..4762b189 --- /dev/null +++ b/samples/viewhost/res/values/strings.xml @@ -0,0 +1,21 @@ +<!-- + 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. +--> +<resources> + <string name="app_name">ExternalViewTest</string> + + <string name="hello_world">Hello world!</string> + <string name="action_settings">Settings</string> +</resources> diff --git a/samples/viewhost/res/values/styles.xml b/samples/viewhost/res/values/styles.xml new file mode 100644 index 00000000..9531e170 --- /dev/null +++ b/samples/viewhost/res/values/styles.xml @@ -0,0 +1,23 @@ +<!-- + 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. +--> +<resources> + + <!-- Base application theme. --> + <style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar"> + <!-- Customize your theme here. --> + </style> + +</resources> diff --git a/samples/viewhost/src/org/cyanogenmod/samples/extviewhost/MainActivity.java b/samples/viewhost/src/org/cyanogenmod/samples/extviewhost/MainActivity.java new file mode 100644 index 00000000..0ce662e1 --- /dev/null +++ b/samples/viewhost/src/org/cyanogenmod/samples/extviewhost/MainActivity.java @@ -0,0 +1,37 @@ +/* + * 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.extviewhost; + +import android.app.Activity; +import android.content.ComponentName; +import android.os.Bundle; + +import cyanogenmod.externalviews.ExternalView; + +public class MainActivity extends Activity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + ExternalView ev = (ExternalView) findViewById(R.id.external_view); + ComponentName cn = new ComponentName("org.cyanogenmod.samples.extview", + "org.cyanogenmod.samples.extview.SampleProviderService"); + ev.setProviderComponent(cn); + } + +} diff --git a/samples/viewprovider/Android.mk b/samples/viewprovider/Android.mk new file mode 100644 index 00000000..dda3a6f6 --- /dev/null +++ b/samples/viewprovider/Android.mk @@ -0,0 +1,24 @@ +# 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. +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_STATIC_JAVA_LIBRARIES := \ + org.cyanogenmod.platform.sdk + +LOCAL_SRC_FILES := $(call all-java-files-under, src/) + +LOCAL_PACKAGE_NAME := CMExternalViewProvider + +include $(BUILD_PACKAGE)
\ No newline at end of file diff --git a/samples/viewprovider/AndroidManifest.xml b/samples/viewprovider/AndroidManifest.xml new file mode 100644 index 00000000..0556a03d --- /dev/null +++ b/samples/viewprovider/AndroidManifest.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + 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. +--> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="org.cyanogenmod.samples.extview" + android:versionCode="1" + android:versionName="1.0"> + + <uses-sdk android:minSdkVersion="23" android:targetSdkVersion="23" /> + + <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> + <uses-permission android:name="android.permission.WRITE_SETTINGS" /> + <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> + + <application android:label="@string/app_name" android:icon="@drawable/ic_launcher"> + <service android:name=".SampleProviderService" + android:exported="true"> + + </service> + </application> +</manifest> diff --git a/samples/viewprovider/res/drawable-hdpi/ic_launcher.png b/samples/viewprovider/res/drawable-hdpi/ic_launcher.png Binary files differnew file mode 100644 index 00000000..96a442e5 --- /dev/null +++ b/samples/viewprovider/res/drawable-hdpi/ic_launcher.png diff --git a/samples/viewprovider/res/drawable-ldpi/ic_launcher.png b/samples/viewprovider/res/drawable-ldpi/ic_launcher.png Binary files differnew file mode 100644 index 00000000..99238729 --- /dev/null +++ b/samples/viewprovider/res/drawable-ldpi/ic_launcher.png diff --git a/samples/viewprovider/res/drawable-mdpi/ic_launcher.png b/samples/viewprovider/res/drawable-mdpi/ic_launcher.png Binary files differnew file mode 100644 index 00000000..359047df --- /dev/null +++ b/samples/viewprovider/res/drawable-mdpi/ic_launcher.png diff --git a/samples/viewprovider/res/drawable-xhdpi/ic_launcher.png b/samples/viewprovider/res/drawable-xhdpi/ic_launcher.png Binary files differnew file mode 100644 index 00000000..71c6d760 --- /dev/null +++ b/samples/viewprovider/res/drawable-xhdpi/ic_launcher.png diff --git a/samples/viewprovider/res/layout/main.xml b/samples/viewprovider/res/layout/main.xml new file mode 100644 index 00000000..c2742aaf --- /dev/null +++ b/samples/viewprovider/res/layout/main.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + 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. +--> +<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/viewprovider/res/values/strings.xml b/samples/viewprovider/res/values/strings.xml new file mode 100644 index 00000000..6d6780c6 --- /dev/null +++ b/samples/viewprovider/res/values/strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + 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. +--> +<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/viewprovider/src/org/cyanogenmod/samples/extview/SampleProviderService.java b/samples/viewprovider/src/org/cyanogenmod/samples/extview/SampleProviderService.java new file mode 100644 index 00000000..21ef2741 --- /dev/null +++ b/samples/viewprovider/src/org/cyanogenmod/samples/extview/SampleProviderService.java @@ -0,0 +1,40 @@ +/* + * 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.extview; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import cyanogenmod.externalviews.ExternalViewProviderService; + +public class SampleProviderService extends ExternalViewProviderService { + @Override + protected ExternalViewProviderService.Provider createExternalView(Bundle options) { + return new ProviderImpl(options); + } + + private class ProviderImpl extends Provider { + protected ProviderImpl(Bundle options) { + super(options); + } + + @Override + protected View onCreateView() { + return LayoutInflater.from(SampleProviderService.this).inflate(R.layout.main, null); + } + } +} |