PSPx форум

PSPx форум (https://www.pspx.ru/forum/index.php)
-   Все об Android OS (https://www.pspx.ru/forum/forumdisplay.php?f=221)
-   -   [Android] Задавайте срочные вопросы здесь... (https://www.pspx.ru/forum/showthread.php?t=91628)

Dr.House 11.05.2011 23:11

[Android] Задавайте срочные вопросы здесь...
 
Задавайте срочные вопросы здесь!

http://nick-name.ru/img.php?id=362704


Задаем здесь свои вопросы касательно настройки/оптимизации и работы в целом OS Android.
Единственное условие: Описывайте свою проблему максимально развернуто.
Какой у вас аппарат, какая версия прошивки и т.д. - пишите, не стесняйтесь.
Чем больше мы знаем - тем проще нам будет вам помочь.

SunTexnik 26.06.2011 23:52

Возникла некоторая проблемка.
Имеется Xperia mini, на андроиде 2.3
Требуется- получить рут права.
Поискал в гугле- инструменты написаны только на 2.2
Как я понимаю права в пролете? Или я что то упустил?

Dr.House 27.06.2011 00:03

XPERIA X10 ? По ходу да, рута нету...

DimoNimitSU 27.06.2011 11:30

Дак 2.3 офф на мини нету, а на всех кастом как правило уже все предустановлено.
П.С: все беру с 4пда, пока никаких проблем.

Dr.House 27.06.2011 14:02

Тогда я не понимаю в чем вопрос :D

SunTexnik 27.06.2011 14:25

И на том спасибо

MaverikMac 01.07.2011 11:24

Подскажите на ноутбук Тошиба АС 100 с Андроидом 2.1 не получается установить Скайп через Андроид маркет - пишет что у данного аккаунта нет устройств, каким образом можно зарегистрировать в аккаунте устройство. При первом включении указали адрес почты на gmail?

Dr.House 01.07.2011 15:05

При включении устройства первый раз вбивается gmail, за которым это устройство закреплено будет

DARK-MAN-X 09.08.2011 01:21

Как разлочить galaxy S но блин корейсий docomo sc-02b

sal.1978 09.01.2012 23:37

наушники
 
у меня не работает ответ с наушников. пробывал другие тоже самое. может есть настройки какие-то подскажите пожалуйста

DeAmouSE 10.01.2012 11:46

Цитата:

Сообщение от sal.1978 (Сообщение 1002335)
у меня не работает ответ с наушников. пробывал другие тоже самое. может есть настройки какие-то подскажите пожалуйста

А хотелось бы узнать модель и марку телефона, какой андроид стоит.

У меня вообще гарнитура не работает :) Точнее как, если слушать музыку то не слышно голоса и прочего. Вставляешь обычные наушники то ставится все нормально. Причем пробовал гарнитуру от Samsung Galaxy Spica не работает, а вот попробовал от Samsung Wave 723 так гарнитура нормально работает. У самого Samsung Galaxy Ace.

sal.1978 10.01.2012 18:35

проблема вот какая-(samsung i5800) после покупки всё было нормально(наушники работали и можно было отвечать на звонок кнопкой на гарнитуре),но пришлось обнулить телефон и после этого не могу ответить на звонок кнопкой на наушниках.наушники проверял на другом телефоне-работают.

DeAmouSE 11.01.2012 15:33

Если честно, то странно даже. А что имеется ввиду под "обнулить телефон" сброс на заводские настройки или перепрошивка телефона?

Просто если честно то в настройках телефона я не помню, что бы там что то было про гарнитуру.

Да и кстати, а какой андроид стоит у тебя, и официальная прошивка или нет?

ALF 11.01.2012 15:42

Мне кажется, что должно быть (настройки гарнитуры). Сам посмотреть не могу, у меня MIUI стоит. У меня гарнитура от Sensation XE работает, и наушники, и микрофон, и управление пультом

DeAmouSE 11.01.2012 16:00

Ну не знаю, почитал в интернете, все советуют сделать хард ресет.
Что именно это какой-то сбой в системе, скорее всего. Просто полазил в андроиде 2.3.3 там ни чего в настройках с гарнитурой нету.
Советую сделать хард резет еще разок, но правда в начале сделать бэкап что бы если что восстановить все сразу можно было.
Так же может не до конца вставляете наушники? правда дурацкий совет но все же :)

sal.1978 11.01.2012 20:24

спасибо за отзывчивость. а то на 4PDA несколько раз задавал вопрос и никто не отозвался. А прошивка стоит родная 2.1-update1 . не хочу прошивать пока тел на гарантии.обнулил значит сброс на заводские настройки.

DeAmouSE 11.01.2012 21:48

Цитата:

Сообщение от sal.1978 (Сообщение 1002843)
обнулил значит сброс на заводские настройки.

Ну попробуй еще раз сбросить на заводские, может поможет. Если конечно не пробовал

sal.1978 12.01.2012 21:19

разобрался! оказывается когда стоит плеер Zimly(кстати единственный,который адекватно работает на моём телефоне samsung i5800,остальные почему-то тормозят) тел не реагирует на кнопку на наушниках. как только удаляешь его всё начинает работать. Кстати посоветуйте видео-плеер на мой телефон.

DeAmouSE 12.01.2012 21:57

Цитата:

Сообщение от sal.1978 (Сообщение 1003135)
оказывается когда стоит плеер Zimly

Кстати думал об этом. Ты в настройках программы покапайся. Там должно это быть, отключишь и норм будет.

А относительно видеоплеера,MoboPlayer. Правда не знаю пойдет он на твоём устройстве.

vAST 12.01.2012 22:08

я пробовал RockPlayer и MX Video на аппаратах похуже и видео показывалось. Конечно же HD рипы не потянет а DVD рипы вполне не плохо идут. Но мой совет лучше конвертировать под свое устройство и юзать стандартный плеер.

sal.1978 13.01.2012 22:04

samsung i-5800 родным плеером видео играет нормально без конвертации avi до 1.5 Gb ,но там звук слабый,с одним ухом ничего не слышно,а в два на работе не могу, надо следить за начальством.кстати поставил Zimly более новой версии и всё работает. всем спасибо за помощь!

vAST 16.01.2012 11:13

Цитата:

Сообщение от sal.1978 (Сообщение 1003338)
samsung i-5800 родным плеером видео играет нормально без конвертации avi до 1.5 Gb ,но там звук слабый,с одним ухом ничего не слышно,а в два на работе не могу, надо следить за начальством.кстати поставил Zimly более новой версии и всё работает. всем спасибо за помощь!

у самсунгов родной плеер просто конфетка (в большинстве случаев), звук лечится настройками, либо хорошими ушами. Все же склоняюсь в сторону MX Player но Zimly гляну как нибудь. DeAmouSE проще, у него Samsung Ace и он больше о родном плеере может сказать.

DeAmouSE 16.01.2012 11:27

Цитата:

Сообщение от vAST (Сообщение 1003988)
DeAmouSE проще, у него Samsung Ace и он больше о родном плеере может сказать.

Родной плеер, устраивает, как в плане просмотра видео, так и в плане музыки, есть конечно момент, что да, нужны уши "затычки" в наушниках как у меня, в метро очень плохо слушать, потому что посторонние шумы перебивают.
А если в плане в автобусе(машине) то очень даже ни чего слушается.

sal.1978 18.01.2012 00:33

звук у samsung i5800 в родном видеоплеере не лечиться ничем. он слабый.

vAST 18.01.2012 09:21

Цитата:

Сообщение от sal.1978 (Сообщение 1004493)
звук у samsung i5800 в родном видеоплеере не лечиться ничем. он слабый.

скорей всего это из-за железа. Современные аппараты от Самсунга ничем по качеству звука не уступают топовым плеерам.
Еще одной причиной некачественно (тихого) звука может быть низкий битрейд (читайте качество) музыки.
И еще одну стоит отметить - наушники по ТТХ не подходят под ТТХ телефона. Это я тоже проходил, приходилось экспериментировать, чтобы подобрать универсальные наушники. Я пока доверяю Sony. Их наушники легко можно назвать универсальными. С топовыми фирмами несколько сложнее подобрать, но можно. Нужно лишь читать мнения, обзоры и тесты наушников на своих гаджетах, что собственно я всегда делаю перед покупкой новых наушников и гаджетов.

P.S. наушники Sony купленные 5 лет назад до сих пор лучшие для меня, а кто то считает их худшими - тараканы у всех разные.

sal.1978 20.01.2012 21:58

samsung i5800 звук в муз-плеере очень хороший(наушники родные) только в видео плеере звук плохой.

Psp-android 04.02.2012 23:26

У меня проблема.Телефон : HTC Wilfire,Android 2.3 . Пользуюсь я уже установленным Google

Gregorio 05.02.2012 07:56

Psp-android, полностью сообщение напиши пожалуйста, это раз. и каким браузером пользуешься, два

Psp-android 11.03.2012 21:58

http://stepandstep.ru/catalog/learn-...kompyuter.html Захотел андроид ! Проблема- не подскажите что скачивать? гугл хром помог но не сильно,если у меня Qompaq presario CQ56 что скачивать? При условии , что я хочу 4.0

Dr.House 12.03.2012 00:22

combofacepalm^100500

blicnik 16.03.2013 23:30

люди хелп!тема еще жива?хотел спросить..на устройствах с разрешением 320/480 в гоф2 не избежны крупные иконки?кэш нужный ставил.. иконки интерфейса во весь экран..(

DeAmouSE 16.03.2013 23:32

Как то более подробно можно? А то что то я ни чего так и не понял

blicnik 16.03.2013 23:48

речь о galaxy on fire2

DeAmouSE 16.03.2013 23:53

Ну я понимаю, просто иконки они стандартные, и не во весь экран, размер вроде как у всех стандартное.

Либо я чего-то не понимаю, просто у меня гэлекси эйс, и иконки нормальные. Ни как не мешают


ааааа все туплю...блин пора отдыхать...понял проблему... попробую помочь

DeAmouSE 17.03.2013 00:03

Так на сколько я понимаю, мы говорим об игре Galaxy on Fire 2

А устройство то какое?

Какая именно версия ставится Galaxy on Fire 2 THD или обычная?

blicnik 17.03.2013 00:08

буду очень благодарен за помощь!

blicnik добавил 17.03.2013 в 00:08
sony Xperia tipo. версия та что лежит на рутрекере

DeAmouSE 17.03.2013 00:09

Цитата:

Сообщение от blicnik (Сообщение 1066644)
версия та что лежит на рутрекере


Я конечно извиняюсь, но все экстрасенсы уехали в отпуск...

Желательно написать какая версия, что бы было проще ориентироваться...

blicnik 17.03.2013 00:16

http://rutracker.org/forum/viewtopic.php?t=3625591

DeAmouSE 17.03.2013 09:50

Попробую версию для Xperia. Можно скачать с Google Play

DeAmouSE 17.03.2013 10:22

Итак, начнем...

Инструментарий
Нам понадобиться следующие программы:
1. Apk Manager(скачать можно здесь).
2. Любой текстовый редактор(сгодится и виндовый блокнот).
3. Ida Pro 5.5(можно найти в инете, на трекерах).
4. Любой шестнадцатеричный редактор(наприер, UltraEdit).


Теперь давайте задумаемся, что представляет собой оптимизация игры под экраны HVGA/QVGA?
Ее можно разделить на несколько этапов.
Основные:
  1. Смена разрешения рендеринга на HVGA/QVGA.
  2. Корректировка координатной сетки сенсорного экрана.
Второстепенные:
  1. Отключение проверки кеша(необходимо для того чтоб можно было переконвертировать вступительный ролик меньшее разрешение).
  2. Назначение аппаратной кнопки, на какое-либо действие(необходимо для телефонов без мультитача).
Прежде чем приступить к какому-либо этапу оптимизации, нам необходимо добраться до исходного кода программы, оригинальный исходный код мы разумеется не получим, но можем получить JAVA-байт код, чего вполне для нашей задачи будет достаточно. Для этого мы будем использовать "Apk Manager".

Установка и работа с "Apk Manager".
В установке нет ничего сложного, просто разархивируйте его в любую папку. Также рекомендую в файле Script.bat, находящемуся в папке с "Apk Manager", изменить "set heapy=64" на большее значение, например на 256 или 512, для предотвращение проблем с большими апк-файлами.
Работа с "Apk Manager" тоже не представляет сложностей. Необходимый апк-файл кладем в папку "place-apk-here-for-modding", запускаем "Script.bat" и в появившемся окне, с зеленным текстом, жмем "9" и "Enter". Менее чем через минуту, в папке "projects" получаем распакованный апк-файл. Запаковываем аналогично, запускаем "Script.bat", жмем "11", "Enter", на вопрос "является ли апк системным?", жмем "n". И в конце, когда апк-файл запакован, подписываем его, для этого жмем "12" и "Enter". В итоге получаем в папке "place-apk-here-for-modding" файл с именем signed[имя оригинального апк-файла].apk. Дополнительно про "Apk manager" можно почитать здесь.


Далее по-тексту jписание процесса распаковки/запаковки апк-файлов.
Также прежде чем начинать, рекомендуем сначала просмотреть список команд JAVA-байт кода.
Теперь можно преступить непосредственно к оптимизации, для примера будем использовать игру "Modern Combat: Sandstorm".

Смена разрешения рендеринга на HVGA/QVGA.

Большинство игр под андроид, пишется с использованием OpenGL, в OpenGL разрешение задается функцией "glViewPort", ее и будем использовать. Наиболее оптимальным, функцию "glViewPort" размещать в функции "OnDrawFrame". Для этого, с помощью поиска, в папке "smali", которая находится в папке с распакованым апк-файлом, ищем файл, содержащий функцию "OnDrawFrame". Обычно этот файл имеет имя "GameRenderer.smali" или "[Название игры]Renderer.smali", в нашем случае это "SandstormRenderer.smali". Открываем его в блокноте, или другом текстовом редакторе, и находим в нем функцию "OnDrawFrame".
Вот фрагмент этой функции.
Код:

.method public onDrawFrame(Ljavax/microedition/khronos/opengles/GL10;)V
    .locals 6
    .parameter "gl"

    .prologue
    .line 174
    const-wide/16 v0, 0x0

    .line 177
    .local v0, time:J
    invoke-static {}, Ljava/lang/System;->currentTimeMillis()J

    move-result-wide v0

    .line 179
    invoke-static {}, Lcom/gameloft/android/GAND/GloftMCHP/GLMediaPlayer;->update()V

    .line 180
    invoke-static {}, Lcom/gameloft/android/GAND/GloftMCHP/SandstormRenderer;->nativeRender()V

    .line 186
    const-wide/16 v2, 0x32

    invoke-static {}, Ljava/lang/System;->currentTimeMillis()J

    move-result-wide v4

    sub-long/2addr v4, v0

    sub-long v0, v2, v4

    .line 188
    const-wide/16 v2, 0x0

    cmp-long v2, v0, v2

    if-lez v2, :cond_0

    .line 190
    :try_start_0
    invoke-static {v0, v1}, Ljava/lang/Thread;->sleep(J)V
    :try_end_0
    .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0

    .line 193
    :cond_0
    :goto_0
    return-void

    .line 190
    :catch_0
    move-exception v2

    goto :goto_0
.end method

В этот фрагмент кода необходимо добавить вызов функции "glViewPort", таким образом чтоб получилось, как в фрагменте кода ниже.
Код:

.method public onDrawFrame(Ljavax/microedition/khronos/opengles/GL10;)V
        .locals 9
    .parameter "gl"

    .prologue
    const/16 v8, 0x1E0

    const/16 v7, 0x140

    const/4 v6, 0x0

    invoke-interface {p1, v6, v6, v8, v7}, Ljavax/microedition/khronos/opengles/GL10;->glViewport(IIII)V

    .line 174
    const-wide/16 v0, 0x0

    .line 177
    .local v0, time:J
    invoke-static {}, Ljava/lang/System;->currentTimeMillis()J

    move-result-wide v0

    .line 179
    invoke-static {}, Lcom/gameloft/android/GAND/GloftMCHP/GLMediaPlayer;->update()V

    .line 180
    invoke-static {}, Lcom/gameloft/android/GAND/GloftMCHP/SandstormRenderer;->nativeRender()V

    .line 186
    const-wide/16 v2, 0x32

    invoke-static {}, Ljava/lang/System;->currentTimeMillis()J

    move-result-wide v4

    sub-long/2addr v4, v0

    sub-long v0, v2, v4

    .line 188
    const-wide/16 v2, 0x0

    cmp-long v2, v0, v2

    if-lez v2, :cond_0

    .line 190
    :try_start_0
    invoke-static {v0, v1}, Ljava/lang/Thread;->sleep(J)V
    :try_end_0
    .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0

    .line 193
    :cond_0
    :goto_0
    return-void

    .line 190
    :catch_0
    move-exception v2

    goto :goto_0
.end method

Мы добавили 3 константы(v6,v7,v8), присвоили им значение координат левого нижнего(v6;v6) и правого верхнего(v8;v7) угла экрана и передали их в функцию "glViewport". Я думаю понятно, почему для координат левого нижнего угла и для X и для Y используется одна и также константа v6? Так как и X и Y в этом углу равны между собой. Кроме этого изменяем 2-ю строчку в функции ".locals 6" на ".locals 9", это определяет количество констант/переменных используемых в функции, так как мы добавили 3 константы, то 6+3=9. Также обратите внимание, что имена констант (v6,v7,v8), не берутся случайно, а выбираются ориентируясь на уже используемые в функции константы. Если вдруг кто не понял, 0x1E0 в десятичном будет 480, а 0x140 - 320.

Также обратим внимание на функцию "onSurfaceCreated".

Мы добавили 3 константы(v6,v7,v8), присвоили им значение координат левого нижнего(v6;v6) и правого верхнего(v8;v7) угла экрана и передали их в функцию "glViewport". Я думаю понятно, почему для координат левого нижнего угла и для X и для Y используется одна и также константа v6? Так как и X и Y в этом углу равны между собой. Кроме этого изменяем 2-ю строчку в функции ".locals 6" на ".locals 9", это определяет количество констант/переменных используемых в функции, так как мы добавили 3 константы, то 6+3=9. Также обратите внимание, что имена констант (v6,v7,v8), не берутся случайно, а выбираются ориентируясь на уже используемые в функции константы. Если вдруг кто не понял, 0x1E0 в десятичном будет 480, а 0x140 - 320.

Также обратим внимание на функцию "onSurfaceCreated".

А именно на код

Код:

sget v3, Lcom/gameloft/android/GAND/GloftMCHP/SandstormGLSurfaceView;->mDevice_W:I

sget v4, Lcom/gameloft/android/GAND/GloftMCHP/SandstormGLSurfaceView;->mDevice_H:I

В этом коде переменным v3 и v4 присваивается реальное разрешение экрана устройства и передается функции "nativeInit". Так как игра все-таки рассчитана под разрешение 480х800, лучше чтоб игра думала что у вас устройство именно с таким разрешением. по-этому этот код заменяем на
Код:

const/16 v3, 0x320

const/16 v4, 0x1E0

Если этого не сделать могут возникнуть проблемы.
(Можно задать и 480х720, т.к. пропорции у экранов с 480х800 и 320х480 разные и при "сжатии" картинка будет немного сплюснута. Но в этом случае, на этапе "Корректировка координатной сетки сенсорного экрана", коэффициент необходимо будет считать не от 800, а от 720 и будет он не 1,666666666666667, а 720/480=1,5)

Примечание
В других играх вместо этого кода, может быть что-то наподобие этого

Код:

invoke-virtual {v0}, Landroid/view/Display;->getWidth()I

move-result v3

invoke-virtual {v0}, Landroid/view/Display;->getHeight()I

move-result v4

Все-равно его заменяем на:

Код:

const/16 v3, 0x320

const/16 v4, 0x1E0


Или имена переменных быть не v3, v4 а v1, v2. Или вообще ничего подобного не быть, тогда и менять ничего не нужно .
Или если возникают проблемы, то можно на всякий случай пройтись поиском по всем "*.smali" файлам и позаменять все вызовы функций "Landroid/view/Display;->getWidth()I" и "Landroid/view/Display;->getHeight()I", хуже от этого не будет.

Для некоторых игр, проделанной нами работы достаточно и они благополучно меняют разрешения всей графики на необходимое. Для этого снова запаковываем апк-файл и проверяем на телефоне как он работает. Если все удачно то переходим к пункту "Корректировка координатной сетки сенсорного экрана". Если нет то читаем дальше. В нашем случае, с игрой Modern Combat: Sandstorm, не все гладко, игровая графика смаштабировалась до необходимого разрешения, а меню - нет. Это значит, что где-то вызывается функция "glViewPort", и снова меняет разрешение на 480х800. Так-как в файлах "*.smali" функция "glViewPort" не вызывается, можно проверить с помощью поиска, следовательно дело в библиотеке "libsandstorm.so".

Основная идея следующего шага, удалить с библиотеке все вызовы функции "glViewPort".
Для анализа библиотеки нам понадобится "Ida Pro". Для удобства копируем "libsandstorm.so" в любую папку, запускаем "Ida Pro" и жмем на кнопку "New"
http://cs3-2.4pda.to/961107.png
Далее выбераем "Various files", "Unknown file" и жмем "Ок".
http://cs3-2.4pda.to/961108.png
В окне открытия файла указываем путь к библиотеке "libsandstorm.so" и жмем "Открыть".
В следующем окне изменяем "Processor type" на "ARM processorARM710a", далее жмем "Set" и "Ок".
http://4pda.ru/forum/dl/post/961109/Load_a_new_file.png

Если после этого, появятся еще окна с чем либо, жмем "Ок". Теперь необходимо дождаться окончания дизассемблирования. Процесс этот достаточно долгий, по-этому можно пойти покурить или попить кофе
О том что дизассемблирования закончено, укажет сообщение "The initial autoanalysis has been finished." в нижнем окне "Output window".
http://cs3-2.4pda.to/961112.png
Для большего удобства, в нашем случае, кликаем правой кнопкой мышки по голубой области, и в контекстном меню выбираем "Text view". Перемещаемся в самое начало ассемблерного кода, для осуществление поиска "glViewPort".
http://4pda.ru/forum/dl/post/961113/Dism2.png
Жмем комбинацию клавиш "Alt+T" и в появившемся диалоге для поиска вводим "glViewPort" и жмем "Ок".
http://cs3-2.4pda.to/961114.png
Нас интересуют вызовы функций "BLX glViewport", "BL glViewport", "B glViewport", "BX glViewport" и т. д. Любые другие упоминания о "glViewport" мы игнорируем, жмакаем "Ctrl+T" и продолжаем поиск.
Найдя необходимое место, переключаемся на "Hex View-A".
http://cs3-2.4pda.to/961115.png
Удостоверяемся, что вызов функции занимает 4 байта и это "CE F7 D4 E8"(в вашем случае эти цифры могут быть другими), это необходимо для того чтоб видеть что нужно исправлять и не затереть случайно ничего лишнего.
http://4pda.ru/forum/dl/post/961117/VP2.png
Вызов этой функции нам необходимо выпилить, для этого нужно заменить "CE F7 D4 E8"(в вашем случае эти цифры могут быть другими) на "C0 46 С0 46"(Внимание!!! на "C0 46 С0 46" заменяем только в том случае, если в библиотеке используются инструкции Thumb, если используются только ARM инструкции - заменять необходимо на "00 00 A0 E1". Проверить какие используются инструкции достаточно просто. Посмотрите ближайшие инструкции в HEX виде, если среди них есть 2-х байтовые - значит используются инструкции Thumb, если все 4-х байтовые - значит ARM."). Запоминаем адрес "001F994A" и запускаем шестнадцатеричный редактор, я использую "UltraEdit". Открываем в нем нашу библиотеку.
http://4pda.ru/forum/dl/post/961118/UE1.png
Для того чтоб переместится по нужному нам адресу, жмем "Ctrl+G", в появившееся окно вводит "0x001F994A" и жмем "Ок".
http://cs3-2.4pda.to/961119.png
Переместившись мы видим, что попали туда, куда нужно, весь шестнадцатеричный код сходится с тем что мы видели в "Ida Pro" на вкладке "Hex View-A".
http://4pda.ru/forum/dl/post/961120/UE2.png
Исправляем "CE F7 D4 E8" на "C0 46 С0 46".
http://4pda.ru/forum/dl/post/961121/UE3.png


Текущее время: 06:31. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
PSPx Forum - Сообщество фанатов игровых консолей.