Hi, if this is the wrong place to post this, then feel free to move it.
I have an interesting problem with my device. All email apps force close when checking my email, meaning that I can see my inbox, however when I select the email, it force closes. This happens on the stock email app, Gmail app, and the Hotmail app. If I turn off the wifi before going into the email, it doesn't crash.
Does anyone have any ideas? If you need logs, how and what to attache?
Thanks!
Please use the Q&A Forum for questions Thanks
Moving to Q&A
Thanks! Do you have any ideas?
try unstalling and reinstalling. sometimes they get messed up. after that if it still i guess your next best bet would be a factory reset. do a backup first of course
Thanks for the reply.
I tried your suggestions, however it still doesn't work. I think it's missing something related to the wifi permissions, because it only happens when wifi is enabled. How can I verify this? How can I upload logs?
Thanks for the expected quick response.
Traced Source of force closes...
I think I traced the source of the force closes. The logs I've seen, crash after a java security exception, ACCESS. WIFI. STATE, so from what I understand, the apps crash because of missing wifi permissions. I do have android.hardware.wifi in the permission folder, however it's possible that it doesn't give permission to all uids s? Can someone look through the attached text and see if this is indeed the problem, and what's the solution?
Thanks.
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2008 The Android Open Source 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.
-->
<!-- This file is used to define the mappings between lower-level system
user and group IDs and the higher-level permission names managed
by the platform.
Be VERY careful when editing this file! Mistakes made here can open
big security holes.
-->
<permissions>
<!-- ================================================================== -->
<!-- ================================================================== -->
<!-- ================================================================== -->
<!-- The following tags are associating low-level group IDs with
permission names. By specifying such a mapping, you are saying
that any application process granted the given permission will
also be running with the given group ID attached to its process,
so it can perform any filesystem (read, write, execute) operations
allowed for that group. -->
<permission name="android.permission.BLUETOOTH_ADMIN" >
<group gid="net_bt_admin" />
</permission>
<permission name="android.permission.BLUETOOTH" >
<group gid="net_bt" />
</permission>
<permission name="android.permission.INTERNET" >
<group gid="inet" />
</permission>
<permission name="android.permission.CAMERA" >
<group gid="camera" />
</permission>
<permission name="android.permission.READ_LOGS" >
<group gid="log" />
</permission>
<permission name="android.permission.WRITE_EXTERNAL_STORAGE" >
<group gid="sdcard_rw" />
</permission>
<!-- The group that /cache belongs to, linked to the permission
set on the applications that can access /cache -->
<permission name="android.permission.ACCESS_CACHE_FILESYSTEM" >
<group gid="cache" />
</permission>
<!-- RW permissions to any system resources owned by group 'diag'.
This is for carrier and manufacture diagnostics tools that must be
installable from the framework. Be careful. -->
<permission name="android.permission.DIAGNOSTIC" >
<group gid="input" />
<group gid="diag" />
</permission>
<!-- ================================================================== -->
<!-- ================================================================== -->
<!-- ================================================================== -->
<!-- The following tags are assigning high-level permissions to specific
user IDs. These are used to allow specific core system users to
perform the given operations with the higher-level framework. For
example, we give a wide variety of permissions to the shell user
since that is the user the adb shell runs under and developers and
others should have a fairly open environment in which to
interact with the system. -->
<!-- Standard permissions granted to the shell. -->
<assign-permission name="android.permission.WRITE_EXTERNAL_STORAGE" uid="shell" />
<assign-permission name="android.permission.SEND_SMS" uid="shell" />
<assign-permission name="android.permission.CALL_PHONE" uid="shell" />
<assign-permission name="android.permission.READ_CONTACTS" uid="shell" />
<assign-permission name="android.permission.WRITE_CONTACTS" uid="shell" />
<assign-permission name="android.permission.READ_CALENDAR" uid="shell" />
<assign-permission name="android.permission.WRITE_CALENDAR" uid="shell" />
<assign-permission name="android.permission.READ_USER_DICTIONARY" uid="shell" />
<assign-permission name="android.permission.WRITE_USER_DICTIONARY" uid="shell" />
<assign-permission name="android.permission.ACCESS_FINE_LOCATION" uid="shell" />
<assign-permission name="android.permission.ACCESS_COARSE_LOCATION" uid="shell" />
<assign-permission name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" uid="shell" />
<assign-permission name="android.permission.ACCESS_NETWORK_STATE" uid="shell" />
<assign-permission name="android.permission.ACCESS_WIFI_STATE" uid="shell" />
<assign-permission name="android.permission.BLUETOOTH" uid="shell" />
<!-- System tool permissions granted to the shell. -->
<assign-permission name="android.permission.GET_TASKS" uid="shell" />
<assign-permission name="android.permission.CHANGE_CONFIGURATION" uid="shell" />
<assign-permission name="android.permission.REORDER_TASKS" uid="shell" />
<assign-permission name="android.permission.SET_ANIMATION_SCALE" uid="shell" />
<assign-permission name="android.permission.SET_PREFERRED_APPLICATIONS" uid="shell" />
<assign-permission name="android.permission.WRITE_SETTINGS" uid="shell" />
<assign-permission name="android.permission.WRITE_SECURE_SETTINGS" uid="shell" />
<assign-permission name="android.permission.BROADCAST_STICKY" uid="shell" />
<!-- Development tool permissions granted to the shell. -->
<assign-permission name="android.permission.SET_DEBUG_APP" uid="shell" />
<assign-permission name="android.permission.SET_PROCESS_LIMIT" uid="shell" />
<assign-permission name="android.permission.SET_ALWAYS_FINISH" uid="shell" />
<assign-permission name="android.permission.DUMP" uid="shell" />
<assign-permission name="android.permission.SIGNAL_PERSISTENT_PROCESSES" uid="shell" />
<!-- Internal permissions granted to the shell. -->
<assign-permission name="android.permission.FORCE_BACK" uid="shell" />
<assign-permission name="android.permission.BATTERY_STATS" uid="shell" />
<assign-permission name="android.permission.INTERNAL_SYSTEM_WINDOW" uid="shell" />
<assign-permission name="android.permission.INJECT_EVENTS" uid="shell" />
<assign-permission name="android.permission.SET_ACTIVITY_WATCHER" uid="shell" />
<assign-permission name="android.permission.READ_INPUT_STATE" uid="shell" />
<assign-permission name="android.permission.SET_ORIENTATION" uid="shell" />
<assign-permission name="android.permission.INSTALL_PACKAGES" uid="shell" />
<assign-permission name="android.permission.CLEAR_APP_USER_DATA" uid="shell" />
<assign-permission name="android.permission.DELETE_CACHE_FILES" uid="shell" />
<assign-permission name="android.permission.DELETE_PACKAGES" uid="shell" />
<assign-permission name="android.permission.ACCESS_SURFACE_FLINGER" uid="shell" />
<assign-permission name="android.permission.READ_FRAME_BUFFER" uid="shell" />
<assign-permission name="android.permission.DEVICE_POWER" uid="shell" />
<assign-permission name="android.permission.INSTALL_LOCATION_PROVIDER" uid="shell" />
<assign-permission name="android.permission.BACKUP" uid="shell" />
<assign-permission name="android.permission.MODIFY_AUDIO_SETTINGS" uid="media" />
<assign-permission name="android.permission.ACCESS_DRM" uid="media" />
<assign-permission name="android.permission.ACCESS_SURFACE_FLINGER" uid="media" />
<assign-permission name="android.permission.ACCESS_SURFACE_FLINGER" uid="graphics" />
<!-- This is a list of all the libraries available for application
code to link against. -->
<library name="android.test.runner"
file="/system/framework/android.test.runner.jar" />
<library name="javax.obex"
file="/system/framework/javax.obex.jar"/>
</permissions>
Here are logs...
http://pastebin.com/kz1idxqV
Thanks!
I have modified flappy bird a little and I modified the package name in the AndroidManifest XML file, but the app doesn't load up and I can't change the name.
NOTE:It installs even if you have the normal Flappy Bird, the name of both apps is Flappy Bird and confusing too.
How do I make it work and change the name of the application?
Then I want to upload it to the Play Store.
<?xml version="1.0" encoding="utf-8"?>
<manifest android:versionCode="4" android:versionName="1.3" package="com.laze.flappybird"
xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-feature android:glEsVersion="0x20000" android:required="true" />
<application android:theme="@style/AppTheme" android:label="@string/app_name" android:icon="@drawable/ic_launcher">
<activity android:label="@string/app_name" android:name="com.laze.flappy.SplashScreen" android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:label="@string/app_name" android:name="com.laze.GameActivity" android:screenOrientation="portrait" />
<activity android:name="com.google.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />
<meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/app_id" />
</application>
</manifest>
here is the link to the modified flappybird app ...
http://forum.xda-developers.com/showthread.php?t=2648387
decompile and compare with yours and find the problem .
me also modded flappybird a bit using the above link .
pavan kr said:
here is the link to the modified flappybird app ...
http://forum.xda-developers.com/showthread.php?t=2648387
decompile and compare with yours and find the problem .
me also modded flappybird a bit using the above link .
Click to expand...
Click to collapse
Thanks a lot
I was browsing through the decompiled seccamera.jar and found this file called Mp4SlowMotionMaker.java, it includes the code to convert high fps videos to slowmo videos.
I have made an app for it. which I have included the eclipse project from.
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
With a max of 30fps (or actually more like 20fps) its no use, so I did some small tweaks here and there and the result is constant 40fps video on 1920x1080 :good: (buggy though)), I will try to get higher. but when having 40fps and the converting with timescale 1.3 or 1.5 its a nice "fast" slomo video.
What i have done is editing the camera app like this:
Code:
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index ed6e853..a2a377f 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -63,6 +63,7 @@
for time lapse recording -->
<string-array name="pref_video_time_lapse_frame_interval_entryvalues" trans
<item>0</item>
+ <item>25</item>
<item>500</item>
<item>1000</item>
<item>1500</item>
@@ -108,6 +109,7 @@
different units (i.e. seconds, minutes, hours) for time lapse recording -->
<string-array name="pref_video_time_lapse_frame_interval_entries">
<item>@string/pref_video_time_lapse_frame_interval_off</item>
+ <item>@string/pref_video_time_lapse_frame_interval_25</item>
<item>@string/pref_video_time_lapse_frame_interval_500</item>
<item>@string/pref_video_time_lapse_frame_interval_1000</item>
<item>@string/pref_video_time_lapse_frame_interval_1500</item>
@@ -152,6 +154,7 @@
<!-- These values correspond to the time interval between frame capture
for time lapse recording -->
<string-array name="pref_video_time_lapse_frame_interval_duration_values" t
+ <item>0.025</item>
<item>0.5</item>
<item>1</item>
<item>1.5</item>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index dc23bc1..e55cdb2 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -252,6 +252,7 @@
time lapse recording. Appears at top of the dialog. [CHAR LIMIT=30] -->
<string name="pref_video_time_lapse_frame_interval_title">Time lapse</strin
<string name="pref_video_time_lapse_frame_interval_default" translatable="f
+ <string name="pref_video_time_lapse_frame_interval_25">25ms</string>
<!-- Settings screen, Camera setting category title -->
<string name="pref_camera_settings_category">Camera settings</string>
This will make time lapse mode record in 40fps (1000ms / 25ms = 40fps)
And another patch in libstagefright, this was needed because libstagefright forced an error when exceeding range of 15,30
Code:
diff --git a/media/libstagefright/CameraSource.cpp b/media/libstagefright/Camera
index 295c0f5..a899855 100644
--- a/media/libstagefright/CameraSource.cpp
+++ b/media/libstagefright/CameraSource.cpp
@@ -356,8 +356,7 @@ status_t CameraSource::configureCamera(
if (frameRate != -1) {
CHECK(frameRate > 0 && frameRate <= 120);
- const char* supportedFrameRates =
- params->get(CameraParameters::KEY_SUPPORTED_PREVIEW_FRAME_RATES
+ const char* supportedFrameRates = "15,40";
CHECK(supportedFrameRates != NULL);
ALOGV("Supported frame rates: %s", supportedFrameRates);
char buf[4];
@@ -365,7 +364,7 @@ status_t CameraSource::configureCamera(
if (strstr(supportedFrameRates, buf) == NULL) {
ALOGE("Requested frame rate (%d) is not supported: %s",
frameRate, supportedFrameRates);
- return BAD_VALUE;
+// return BAD_VALUE;
}
// The frame rate is supported, set the camera to the requested value.
and this patch to media_profiles.xml
Code:
diff --git a/media/media_profiles.xml b/media/media_profiles.xml
index 499e1fd..62098ec 100644
--- a/media/media_profiles.xml
+++ b/media/media_profiles.xml
@@ -191,12 +191,12 @@
channels="1" />
</EncoderProfile>
- <EncoderProfile quality="timelapsehigh" fileFormat="mp4" duration="30">
+ <EncoderProfile quality="timelapsehigh" fileFormat="mp4" duration="40">
<Video codec="h264"
- bitRate="17000000"
- width="1920"
- height="1080"
- frameRate="30" />
+ bitRate="15000000"
+ width="1280"
+ height="720"
+ frameRate="40" />
<!--
The Audio part of the profile will not be used since time lapse mod
@@ -261,10 +261,10 @@
<EncoderProfile quality="timelapse720p" fileFormat="mp4" duration="30">
<Video codec="h264"
- bitRate="12000000"
- width="1280"
- height="720"
- frameRate="30" />
+ bitRate="17000000"
+ width="1920"
+ height="1080"
+ frameRate="40" />
<!--
The Audio part of the profile will not be used since time lapse mod
@@ -281,7 +281,7 @@
bitRate="17000000"
width="1920"
height="1080"
- frameRate="30" />
+ frameRate="40" />
<!--
The Audio part of the profile will not be used since time lapse mod
@@ -468,10 +468,10 @@
<EncoderProfile quality="timelapse720p" fileFormat="mp4" duration="30">
<Video codec="h264"
- bitRate="12000000"
- width="1280"
- height="720"
- frameRate="30" />
+ bitRate="17000000"
+ width="1920"
+ height="1080"
+ frameRate="40" />
<!--
The Audio part of the profile will not be used since time lapse mo
@@ -483,12 +483,12 @@
channels="1" />
</EncoderProfile>
- <EncoderProfile quality="timelapse1080p" fileFormat="mp4" duration="30">
+ <EncoderProfile quality="timelapse1080p" fileFormat="mp4" duration="40">
<Video codec="h264"
bitRate="17000000"
width="1920"
height="1080"
- frameRate="30" />
+ frameRate="40" />
<!--
The Audio part of the profile will not be used since time lapse mo
@@ -519,7 +519,7 @@
minBitRate="64000" maxBitRate="20000000"
minFrameWidth="176" maxFrameWidth="1920"
minFrameHeight="144" maxFrameHeight="1080"
- minFrameRate="1" maxFrameRate="30" />
+ minFrameRate="1" maxFrameRate="40" />
<VideoEncoderCap name="h263" enabled="true"
minBitRate="64000" maxBitRate="1000000"
mare sure not to use h264 but mp4 because else base levels gets too high and it will crash before recording, with mp4 codec it will crash after recording which doesnt seem to affect the output
awesome
broodplank1337 said:
I was browsing through the decompiled seccamera.jar and found this file called Mp4SlowMotionMaker.java, it includes the code to convert high fps videos to slowmo videos.
I have made an app for it. which I have included the eclipse project from.
With a max of 30fps (or actually more like 20fps) its no use, so I did some small tweaks here and there and the result is constant 40fps video on 1920x1080 :good: (buggy though)), I will try to get higher. but when having 40fps and the converting with timescale 1.3 or 1.5 its a nice "fast" slomo video.
What i have done is editing the camera app like this:
Code:
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index ed6e853..a2a377f 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -63,6 +63,7 @@
for time lapse recording -->
<string-array name="pref_video_time_lapse_frame_interval_entryvalues" trans
<item>0</item>
+ <item>25</item>
<item>500</item>
<item>1000</item>
<item>1500</item>
@@ -108,6 +109,7 @@
different units (i.e. seconds, minutes, hours) for time lapse recording -->
<string-array name="pref_video_time_lapse_frame_interval_entries">
<item>@string/pref_video_time_lapse_frame_interval_off</item>
+ <item>@string/pref_video_time_lapse_frame_interval_25</item>
<item>@string/pref_video_time_lapse_frame_interval_500</item>
<item>@string/pref_video_time_lapse_frame_interval_1000</item>
<item>@string/pref_video_time_lapse_frame_interval_1500</item>
@@ -152,6 +154,7 @@
<!-- These values correspond to the time interval between frame capture
for time lapse recording -->
<string-array name="pref_video_time_lapse_frame_interval_duration_values" t
+ <item>0.025</item>
<item>0.5</item>
<item>1</item>
<item>1.5</item>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index dc23bc1..e55cdb2 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -252,6 +252,7 @@
time lapse recording. Appears at top of the dialog. [CHAR LIMIT=30] -->
<string name="pref_video_time_lapse_frame_interval_title">Time lapse</strin
<string name="pref_video_time_lapse_frame_interval_default" translatable="f
+ <string name="pref_video_time_lapse_frame_interval_25">25ms</string>
<!-- Settings screen, Camera setting category title -->
<string name="pref_camera_settings_category">Camera settings</string>
This will make time lapse mode record in 40fps (1000ms / 25ms = 40fps)
And another patch in libstagefright, this was needed because libstagefright forced an error when exceeding range of 15,30
Code:
diff --git a/media/libstagefright/CameraSource.cpp b/media/libstagefright/Camera
index 295c0f5..a899855 100644
--- a/media/libstagefright/CameraSource.cpp
+++ b/media/libstagefright/CameraSource.cpp
@@ -356,8 +356,7 @@ status_t CameraSource::configureCamera(
if (frameRate != -1) {
CHECK(frameRate > 0 && frameRate <= 120);
- const char* supportedFrameRates =
- params->get(CameraParameters::KEY_SUPPORTED_PREVIEW_FRAME_RATES
+ const char* supportedFrameRates = "15,40";
CHECK(supportedFrameRates != NULL);
ALOGV("Supported frame rates: %s", supportedFrameRates);
char buf[4];
@@ -365,7 +364,7 @@ status_t CameraSource::configureCamera(
if (strstr(supportedFrameRates, buf) == NULL) {
ALOGE("Requested frame rate (%d) is not supported: %s",
frameRate, supportedFrameRates);
- return BAD_VALUE;
+// return BAD_VALUE;
}
// The frame rate is supported, set the camera to the requested value.
and this patch to media_profiles.xml
Code:
diff --git a/media/media_profiles.xml b/media/media_profiles.xml
index 499e1fd..62098ec 100644
--- a/media/media_profiles.xml
+++ b/media/media_profiles.xml
@@ -191,12 +191,12 @@
channels="1" />
</EncoderProfile>
- <EncoderProfile quality="timelapsehigh" fileFormat="mp4" duration="30">
+ <EncoderProfile quality="timelapsehigh" fileFormat="mp4" duration="40">
<Video codec="h264"
- bitRate="17000000"
- width="1920"
- height="1080"
- frameRate="30" />
+ bitRate="15000000"
+ width="1280"
+ height="720"
+ frameRate="40" />
<!--
The Audio part of the profile will not be used since time lapse mod
@@ -261,10 +261,10 @@
<EncoderProfile quality="timelapse720p" fileFormat="mp4" duration="30">
<Video codec="h264"
- bitRate="12000000"
- width="1280"
- height="720"
- frameRate="30" />
+ bitRate="17000000"
+ width="1920"
+ height="1080"
+ frameRate="40" />
<!--
The Audio part of the profile will not be used since time lapse mod
@@ -281,7 +281,7 @@
bitRate="17000000"
width="1920"
height="1080"
- frameRate="30" />
+ frameRate="40" />
<!--
The Audio part of the profile will not be used since time lapse mod
@@ -468,10 +468,10 @@
<EncoderProfile quality="timelapse720p" fileFormat="mp4" duration="30">
<Video codec="h264"
- bitRate="12000000"
- width="1280"
- height="720"
- frameRate="30" />
+ bitRate="17000000"
+ width="1920"
+ height="1080"
+ frameRate="40" />
<!--
The Audio part of the profile will not be used since time lapse mo
@@ -483,12 +483,12 @@
channels="1" />
</EncoderProfile>
- <EncoderProfile quality="timelapse1080p" fileFormat="mp4" duration="30">
+ <EncoderProfile quality="timelapse1080p" fileFormat="mp4" duration="40">
<Video codec="h264"
bitRate="17000000"
width="1920"
height="1080"
- frameRate="30" />
+ frameRate="40" />
<!--
The Audio part of the profile will not be used since time lapse mo
@@ -519,7 +519,7 @@
minBitRate="64000" maxBitRate="20000000"
minFrameWidth="176" maxFrameWidth="1920"
minFrameHeight="144" maxFrameHeight="1080"
- minFrameRate="1" maxFrameRate="30" />
+ minFrameRate="1" maxFrameRate="40" />
<VideoEncoderCap name="h263" enabled="true"
minBitRate="64000" maxBitRate="1000000"
mare sure not to use h264 but mp4 because else base levels gets too high and it will crash before recording, with mp4 codec it will crash after recording which doesnt seem to affect the output
Click to expand...
Click to collapse
Sound good
Is this work with cm?
May u upload modified camera.apk and lib?
This can be interesting I read that our hardware could take 60fps video recording
While Wanam does a good job of allowing any app to float it does not allow the app to appear in the multiwindow tool bar (at least for me) and the side by side view that is native to the feature is what I am after.
You will need to know what decompiling an apk means and probably a non android device. Haven't tried on-board apk decompilers since they are lame.
So just as a synopsis of info easily found anyway here is my method -
Copy the app from /data/app/whatever. This will be called base.apk for all non-system apps. I rename it to something sane for the next step, helpful if doing several at a time.
Copy/move to PC
Using your preferred apk decompiler extract the apk. Open AndroidManifest.xml and within the <application> tag add the following:
<uses-library android:required="false" android:name="com.sec.android.app.multiwindow"> </uses-library>
<meta-data android:name="com.sec.android.support.multiwindow" android:value="true" />
<meta-data android:name="com.sec.android.multiwindow.DEFAULT_SIZE_W" android:value="632.0dip" />
<meta-data android:name="com.sec.android.multiwindow.DEFAULT_SIZE_H" android:value="598.0dip" />
<meta-data android:name="com.sec.android.multiwindow.MINIMUM_SIZE_W" android:value="632.0dip" />
<meta-data android:name="com.sec.android.multiwindow.MINIMUM_SIZE_H" android:value="598.0dip" />
Then in the main intent filter add
<category android:name="android.intent.category.MULTIWINDOW_LAUNCHER"/>
So the xml will look similar to this
<application android:icon="@drawable/icon" android:label="@string/app_name" .... OMITTED>
<uses-library android:required="false" android:name="com.sec.android.app.multiwindow"> </uses-library>
<meta-data android:name="com.sec.android.support.multiwindow" android:value="true" />
<meta-data android:name="com.sec.android.multiwindow.DEFAULT_SIZE_W" android:value="632.0dip" />
<meta-data android:name="com.sec.android.multiwindow.DEFAULT_SIZE_H" android:value="598.0dip" />
<meta-data android:name="com.sec.android.multiwindow.MINIMUM_SIZE_W" android:value="632.0dip" />
<meta-data android:name="com.sec.android.multiwindow.MINIMUM_SIZE_H" android:value="598.0dip" />
.... OMITTED
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
<category android:name="android.intent.category.MULTIWINDOW_LAUNCHER"/>
</intent-filter>
.... OMITTED
</application>
Re-compile, rename to base.apk, replace source base.apk in /data/app/whatever/ with modded version, set permissions (solid explorer does this automagically), reboot.
The app can now be added to the multiwindow bar and used to create a side by side view with other multiwindow aware apps. I've done around 10, Sygic is the only one that won't recompile due to its own issues
For me it is useful to have browser/dictionary, file explorer/text editor and other pairs predefined in the multi window panel.
I have an angular cordova application which has got the html video tag that plays on IOS but not on Android. Play button does not show on android.
html tag is as below:
<video width="320" height="240" controls="controls">
<source src="samplevideolink" type="video/mp4" />
</video>
config.xml of Cordova is as below:
<content src="index.cordova.html" />
<plugin name="cordova-plugin-whitelist" spec="1" />
<access origin="*...." />
<allow-intent href="...." />
<allow-intent href="..." />
<platform name="android">
<allow-intent href="market:*" />
<icon src="assets/android/ldpi.png" density="ldpi" />
<icon src="assets/android/mdpi.png" density="mdpi" />
<icon src="assets/android/hdpi.png" density="hdpi" />
<icon src="assets/android/xhdpi.png" density="xhdpi" />
<icon src="assets/android/xxhdpi.png" density="xxhdpi" />
<icon src="assets/android/xxxhdpi.png" density="xxxhdpi" />
</platform>
<platform name="ios">
....
<preference name="webviewbounce" value="false" />
<preference name="UIWebViewBounce" value="false" />
<preference name="DisallowOverscroll" value="true" />
<preference name="android-minSdkVersion" value="23" />
<preference name="BackupWebStorage" value="none" />
Not sure if there is a problem withany configuration specific to Android in Cordova. Is there any plugin specific to Android Cordova need to be installed
Really appreciate your help.