Как стать автором
Обновить

Включаем Samsung Multi Window в чужом приложении

Время на прочтение3 мин
Количество просмотров39K
В новых смартфонах Samsung есть весьма интересная фича — Multi Windows.
Она позволяет запускать одновременно два приложения в одном окне.
К сожалению, кроме Samsung эту фичу пока что мало кто поддерживает.
Но на самом деле её не так уж и сложно добавить к уже существующему приложению.

Выглядеть это будет вот так



Для переделки приложения нам понадобится:


Тренироваться мы будем на приложении Safari to go (т.к. мне хотелось-бы использовать его параллельно со словарем)

  • Распаковываем apk файл в папку
    apktool.bat d -s com.safaribooksonline.apk ./com.safaribooksonline
  • Вносим следующие изменения в файл AndroidManifest.xml
          ...
          <application  android:label="Safari To Go" ...>
            <activity android:name=".LoginActivity" ...>
                <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>
            </activity>
            ...
            <uses-library required="false" 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:resource="@dimen/app_defaultsize_w" />
            <meta-data android:name="com.sec.android.multiwindow.DEFAULT_SIZE_H" android:resource="@dimen/app_defaultsize_h" />
            <meta-data android:name="com.sec.android.multiwindow.MINIMUM_SIZE_W" android:resource="@dimen/app_minimumsize_w" />
            <meta-data android:name="com.sec.android.multiwindow.MINIMUM_SIZE_H" android:resource="@dimen/app_minimumsize_h" /> 
         </application>
          ...
    

  • Создаем или дополняем файл \res\values\dimens.xml
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        ...
        <dimen name="app_defaultsize_w">632.0dip</dimen>
        <dimen name="app_defaultsize_h">598.0dip</dimen>
        <dimen name="app_minimumsize_w">632.0dip</dimen>
        <dimen name="app_minimumsize_h">598.0dip</dimen>
    </resources>  

  • Запаковываем все обратно в apk файл
    apktool.bat b ./com.safaribooksonline

    Apk файл будет создан в папке
    \com.safaribooksonline\dist\com.safaribooksonline.apk
  • Генерим ключ для подписи apk файла (т.к. приложение будет подписано не оригинальным ключом оно не будет обновляться из google play)
    Я взял название стораджа и алиса прямл из SDK. Но при желании можно поменять на что-то более оригинальное.
    keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
  • Подписываем приложение сгенерированным ключом
    jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore my-release-key.keystore com.safaribooksonline.apk alias_name

Теперь приложение можно устанавливать на устройство.

С такой-же легкостью поддержку Multi windows можно добавить и в своё новое приложение.
Плюс кучу вкусностей с перетаскиванием контента из одного приложения в другое.



Источники:
www.modaco.com/page/news/_/android/developers-add-support-for-samsung-multi-window-to-your-apps-r823
developer.android.com/tools/publishing/app-signing.html
developer.samsung.com/s-pen-sdk/technical-docs-09

P.S. Поддерживаемые устройства:
Samsung S3
Samsung S4
Samsung Note
Samsung Note II
Samsung Note 8.0
Samsung Note 10.1
Теги:
Хабы:
Всего голосов 16: ↑15 и ↓1+14
Комментарии5

Публикации

Истории

Работа

Ближайшие события

One day offer от ВСК
Дата16 – 17 мая
Время09:00 – 18:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн
Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область