Android как написать лаунчер
Если очень грубо определить, что такое лаунчер, то это приложение, которое может представлять домашний экран устройства и показывать список работающих на устройстве приложений. Другими словами, лаунчер это то, что вы видите при нажатии кнопки Home на устройстве. Сейчас вы скорее всего используете стандартный лаунчер, который был установлен вместе с операционной системой. На Play Market существует множество таких программ, установив которые, вы можете видоизменить оформление своего аппарата:
Фактически каждый производитель смартфонов и планшетов имеет свой собственный лаунчер и стиль оформления (например, Samsung — TouchWiz, HTC — Sense).
В этом уроке мы научимся создавать простой лаунчер с базовым пользовательским интерфейсом. В нашем приложении будет два экрана:
— домашний экран, отображающий обои рабочего стола;
— экран, показывающий список установленных приложений и некоторую информацию о них;
Итак, начинаем. Создаем новый проект, названия традиционно оставляем по умолчанию, можете ввести какие нибудь свои. Минимальная версия для запуска приложения — Android 2.2, выбираем Blank Activity.
Сразу идем редактировать файл манифест приложения. Нам нужно добавить здесь 2 activity и задать им некоторые настройки. Открываем файл AndroidManifest.xml и добавим туда следующее:
В этот код мы добавили категории android.intent.category.HOME и android.intent.category.DEFAULT для того, чтобы наше приложение вело себя как лаунчер и отображалось при нажатии на кнопку Home устройства.
Также нужно настроить режим запуска launchMode на singleTask для того, чтобы на данный момент работает только одно нужное Activity. Для отображения пользовательской картинки на заставке, мы использовали настройку темы Theme.Wallpaper.NoTitleBar.FullScreen.
Второе activity, как уже было сказано, будет отображать установленные на устройстве приложения и немного информации о них. Для этой activity не будет использоваться никаких особенных настроек, назовем ее AppsListActivity:
Создадим xml файл разметки для будущего класса HomeActivity. В папке res/layout создаем файл по имени activity_home.xml. Он будет содержать всего одну кнопку, при нажатии на которую пользователь с домашнего экрана будет попадать на экран со списком установленных приложений:
Далее создаем файл xml для AppsListActivity в той же папке, назовем его activity_apps_list.xml. Он будет содержать ListView для отображения списка приложений:
Создаем еще один xml файл по имени list_item.xml. Этот файл будет определять вид заданного выше ListView. Каждый пункт списка будет представлять одно установленное на устройство приложение. Здесь будет отображаться иконка, название и имя пакета приложения. Отображение иконки будет происходить через элемент ImageView, а имя приложения и пакета в TextView:
Теперь нужно создать необходимые java классы. Когда будете создавать классы, убедитесь, что они связаны с данными в файле манифеста, что мы выполняли в начале.
Создаем в приложении файл HomeActivity.java, задаем ему наследование от класса Activity и настраиваем переход на другой экран со списком приложений при нажатии на кнопку, созданную нами ранее (подробный урок по созданию перехода):
Создаем еще одно activity с именем AppsListActivity.java. Настроим этому классу вид интерфейса с ранее созданного файла activity_apps_list.xml:
Уже сейчас можно попробовать протестировать приложение на эмуляторе/устройстве. Пока, что оно не обладает желаемым функционалом, но все же. Запустите приложение и нажмите кнопку Home, вы увидите окно в котором вам будет предложено выбрать лаунчер для запуска, стандартный и наш. Запускаем наш и видим примерно следующее:
Мы видим заставку рабочего стола и нашу кнопку запуска второго activity.
Полюбовались и хватит, возвращаемся к работе в Android Studio. Создаем еще один класс по имени AppDetail, который будет содержать более детальную информацию о приложении, название пакета, имя приложения и иконку. Код этого класса предельно простой и выглядит так:
В методе loadApps класса AppsListActivity мы используем метод queryIntentActivities, он нужен для того, чтобы выбрать все объекты Intent, которые имеют категорию Intent.CATEGORY_LAUNCHER. Запрос будет возвращать список приложений, которые могут быть запущены нашим лаунчером. Мы запускаем цикл по результатам запроса и создаем и добавляем каждый его пункт в список по имени apps. Чтобы реализовать все сказанное, добавляем следующий код:
Теперь нужно настроить отображение списка приложений. В созданном списке apps мы поместили все необходимые данные о приложении, теперь их надо отобразить в созданном в начале урока ListView. Для этого мы создаем ArrayAdapter и описываем метод getView, а также связываем ArrayAdapter с ListView:
Когда пользователь нажимает на пункты списка с приложениями, то наш лаунчер должен запускать соответствующее приложение. Это будет выполняться благодаря методу getLaunchIntentForPackage , создающего намерение Intent, запускающее нужное приложение:
Осталось собрать все описанные выше методы в один рабочий механизм. В классе AppsListActivity вызываем методы loadApps, loadListView и addClickListener:
Запускаем наше приложение. Теперь при нажатии на кнопку вызова второго activity «Show Apps» мы видим список из установленных приложений. При нажатии на выбранный элемент списка, мы будем запускать соответствующее приложение:
Поздравляю! Теперь в придачу до собственных калькулятора, браузера, конвертера и много другого, мы имеем еще и собственный Android Launcher. Надеюсь урок был вам интересен и полезен.
Источник
[Android] Разработка лаунчера
Реквестирую спецов по разработке под андроид.
Вопрос вот в чем — хочу попробовать написать свой небольшой лаунчер для андроида, на замену сенсе и прочим. Специфичный такой лаунчер, так что про велосипеды не нужно орать. И возникает вопрос — я правильно понимаю, что лаунчер по сути такое же обычное приложение, как все другие, но с какими-то другими правами и возможностью управлять запуском приложений?
Ну и реквестирую годные ссылки и мануалы по разработке под андроид.
mono , ты вроде под андроид пишешь, не?
С такими вопросами тебе сюда.
Нет, лаунчер — это совершенно обычное приложение, которое просто запускается в виде хоум-скрина. Писать его можно как тебе угодно. Чтобы Android воспринимал твое приложение как Launcher нужно правильно сформировать AndroidManifest.xml
То есть, никаких специальных ограничений на лаунчер нет. Показывать список доступных приложений и запускать их может любое приложение.
Для отладки удобно запускать лаунчер как обычное standalone-приложение.
Ну и реквестирую годные ссылки и мануалы по разработке под андроид.
Источник
На чем писать андроид-лаунчер?
Ученик предложил мне очень интересную идею лаунчера с активной работой с ОС, голосовым управлением и фидбеком и кучей всего, что можно добавить позже. Проблема в том, что классическое приложение на джаве ему осилить будет сложно. Есть базовые знания Python и JS, но очень сомневаюсь, что на них можно написать достаточно эффективное по памяти и энергопотреблению мобильное приложение. Очень желательно также выбрать кроссплатформенный фреймворк, чтобы проект можно было довольно безболезненно портировать на iOS. Что происходило в последний год в мобильной разработке не имею ни малейшего понятия. Склонялся к React Native, но держать на телефоне постоянно включенный браузер — оверкилл как по мне. Поэтому буду рад любым комментариям по поводу выбора фреймворка, библиотек, языка и собственно начала разработки. Благодарю за внимание.
На андроиде java (kotlin), других вариантов нету, можно ещё и C++ с NDK вкорячить, но там ещё сложнее будет.
Думаю, школьнику освоить что-либо из вышеперечисленного будет непосильной задачей. Возможно, проект в итоге все-таки придется переписать на джаву, но судя по моему опыту это боль (
Благодарю! Про flutter я уже и забыл. Выглядит на скриншотах неплохо, хотя внешний вид для этого проекта не важен от слова вообще. Уже качаю, буду разбираться.
Может фуксия взлетит, тогда это ещё и задел на будущее.
школьник и нормальный лаунчер не осилит
Смотря какой школьник и какой лаунчер. Пока цель — сделать хоть что-то рабочее или хотя бы запускаемое. Времени до конца учебного года вполне достаточно, чтобы разобраться в технологии, если она не переусложнена (как большинство современных технологий, увы).
Котлин очень лаконичный язык, если школьник понял питон и js, то и с котлином справиться должен.
Котлин очень лаконичный язык, если школьник понял питон и js, то и с котлином справиться должен.
А если еще ногти подстрижет, так вообще не останется препятствий к реализации
лаунчера с активной работой с ОС, голосовым управлением и фидбеком и кучей всего
А если еще ногти подстрижет, так вообще не останется препятствий к реализации
Может он еще и мыться начать должен?
Пока цель — сделать хоть что-то рабочее или хотя бы запускаемое.
Думаю, школьнику освоить что-либо из вышеперечисленного будет непосильной задачей.
Я как человек, который будучи школьником, писал на мнемокодах БЗ-21 и немного на Аналитике, огорчён таким принижением потенциала любознательных школьников. Крестами его, возможно, травить и не надо, но уж джаву чего б не подучить. И в жизни может пригодится…
Ты на мнемокодах БЗ-21 и немного на Аналитике почему писал? Потому что у тебя референс-пойнта не было, и подлых абстракций под тобой было. Эти времена ушли.
Короче, решил пока поизучать flutter, вроде бы Dart один из самых простых языков. Конечно, изучать новый не особо популярный язык ради одного проекта не слишком эффективно, но пока не вижу других вариантов. Kotlin, насколько я знаю, вообще маргинальщина, на нем пишут в основном в СНГ из-за того, что есть документация на русском ) Сам не смотрел, могу ошибаться.
Kotlin, насколько я знаю, вообще маргинальщина
Today over 60 of Google’s apps are built using Kotlin. This includes apps like Maps, Home, Play, and Drive. Это они серьезно? Если так, беру свои слова назад. Но это не отменяет того, что на нем можно писать только под андроид, когда у тех же React Native и flutter есть библиотеки под iOS (по поводу их беспроблемности под последний пока не уверен).
Если так, беру свои слова назад. Но это не отменяет того, что на нем можно писать только под андроид
котлин полноценный язык, на котором можно писать не только под андроид.
Java или NDK + SDL2 тоесть «С» если уж и делать то по нормальному. Сейчас насоветуют всяких фреймворков и прочего дерьма на js или всякие реактнативы, фуксии и прочее дерьмо.
Ну началось, ребёнок в этом море абстракций потонет и ничего не поймёт по итогу. У вас цель то какая? Просто сделать ради сделать и похеру как оно там работает или сделать попутно выясняя чё да как и почему? Тоесть с академической жилкой? Если второе java или/и NDK + SDL2. Если первое то самый популярный фреймворк позиционирующий себя как быстрая разработка для бизнес решений, это как раз самое оно, спроектировано с прицелом на даунов всё делается из готовых блоков, но ни шагу в сторону.
Может непосильной для уже взрослого человека. Ребёнок в плане гибкости ума и памяти на голову выше учителя. Чё вы всё детей по умолчанию долбоёбами считаете? Сюсюкаете и до тупизны простые задачи перед ними ставите? У них цель одна, что бы мозг кипел. Либо вы жарите их на грани их сил или получаете на выходе затупков. java не ракетная технология ребёнок осилит быстрее чем любой взрослый. Ему не интерпрайз пилить.
По идее нужно что-то среднее: достаточно простое по структуре и использованию, чтобы можно было общаться с системой и не было оверхеда по производительности, но не такое, чтобы неподготовленный человек сломал голову и в последствии сторонился всего, что связано с написанием кода. Изначально мы вообще рассматривали MIT App Inventor ) Моя цель на данный момент — поработать со всем, что уже было здесь предложено и выбрать на основе чего мы будем делать проект. С джавой, где как раз-таки пишется много непонятного кода просто потому что надо, у меня, как я уже писал, исторически не сложились отношения, но в принципе готов потыкать ее еще, если не найдется более оптимальный вариант.
И даже под iOS? Насколько знаю, сколько-нибудь серьезные приложения там пишутся только на Objective-C и Swift, который по идее аналог Kotlin, но писать два отдельных приложения под разные ОС мы точно пока не сможем.
Достаточно интересно выглядит, посмотрю. Вопрос только в том, насколько сильно это будет тормозить и жрать батарею.
Проблема в том, что классическое приложение на джаве ему осилить будет сложно. Есть базовые знания Python и JS, но очень сомневаюсь, что на них можно написать достаточно эффективное по памяти и энергопотреблению мобильное приложение. Очень желательно также выбрать кроссплатформенный фреймворк, чтобы проект можно было довольно безболезненно портировать на iOS.
Ну всё ответил же. Бери react-native и вперёд. Если можешь помочь с ооп — C#.
но держать на телефоне постоянно включенный браузер — оверкилл как по мне.
Тапк учи ученика. Или тролль или не пойми что.
Ну, хз. Как вариант не выбирать на пустую средства и язык. По итогу пока вы двое сами на 100% не занаете что хотите. И если по началау привет мир ваш будет написан и всё вроде ок, то в чуть более сложном случае уже не всё очевидно. Я бы пошёл на гитхаб и нашёл что-то что явно или косвенно делает тоже самое например что-то типа termux или kde-connect например или что-то вообще мелкое типа демку какую и взять за основу плюс развить до того как это видите вы. Просто вот так с нуля без ничего с мытным пониманием чего хоца (а хоца чёбы всюо опащки и сразу клёва) такое себе. Или просто посмотреть на чём другие делают (с открытым кодом) и выбрать из этого потом будет в 100 раз легче выяснять что-то.
Но всё же если хочется что-бы было не шибко сложно то берите самый самый бизнес фреймворк где всё из готовых кирпичей. Ибо либо вы с академическим интересом роетесь в кишках по шее в знаниях. Либо делаете из готовых кирпичей. Серединки нету.
Так хотя бы будет знакомый язык (python),а для прототипа я думаю скорость не важна.
Источник