Страницы

Поиск по вопросам

Показаны сообщения с ярлыком эмулятор. Показать все сообщения
Показаны сообщения с ярлыком эмулятор. Показать все сообщения

понедельник, 13 апреля 2020 г.

Как на эмулятор закачать картинки/фотографии?

#эмулятор #windows_phone_8

                    
Как на эмулятор Windows Phone 8 закачать картинки/фотографии с компьютера (не из
своей программы)?    


Ответы

Ответ 1



Создайте папку TestImages в проекте и добавьте туда изображения. Установите значение Build action в Content на файлы в свойствах Visual Studio. Измените .csproj (правый клик на проекте, 'Unload Project' потом правый клик, 'edit .csproj') Добавьте условие настройки в строки, которые включают файлы в проекте, как этот: Добавьте следующий код в App constructor: #if DEBUG if (Microsoft.Devices.Environment.DeviceType == DeviceType.Emulator) { EmulatorHelper.AddDebugImages(); } #endif Добавьте класс EmulatorHelper: using System; using System.Collections.Generic; using System.IO.IsolatedStorage; using Microsoft.Xna.Framework.Media; namespace MyPhotoApp { public static class EmulatorHelper { const string flagName = "__emulatorTestImagesAdded"; public static void AddDebugImages() { bool alreadyAdded = CheckAlreadyAdded(); if (!alreadyAdded) { AddImages(); SetAddedFlag(); } } private static bool CheckAlreadyAdded() { IsolatedStorageSettings userSettings = IsolatedStorageSettings.ApplicationSettings; try { bool alreadyAdded = (bool)userSettings[flagName]; return alreadyAdded; } catch (KeyNotFoundException) { return false; } catch (ArgumentException) { return false; } } private static void SetAddedFlag() { IsolatedStorageSettings userSettings = IsolatedStorageSettings.ApplicationSettings; userSettings.Add(flagName, true); userSettings.Save(); } private static void AddImages() { string[] fileNames = { "img1", "img2", "img3", "img4", "img5" }; foreach (var fileName in fileNames) { MediaLibrary myMediaLibrary = new MediaLibrary(); Uri myUri = new Uri(String.Format(@"TestImages/{0}.jpg", fileName), UriKind.Relative); System.IO.Stream photoStream = App.GetResourceStream(myUri).Stream; byte[] buffer = new byte[photoStream.Length]; photoStream.Read(buffer, 0, Convert.ToInt32(photoStream.Length)); myMediaLibrary.SavePicture(String.Format("{0}.jpg", fileName), buffer); photoStream.Close(); } } } } Теперь у Вас есть проект, который автоматически добавляет тестовые изображения в фотогалерею, при условии, что: build Configuration установлена в 'Debug' приложение запущено в эмуляторе изображения еще не были добавлены Преимущество в том, что это не влияет на Release XAP по производительности или размеру. Источник

среда, 26 февраля 2020 г.

Проблема с запуском эмулятора в Android Studio

#java #android #android_studio #эмулятор #android_emulator


Пытаюсь запустить один из этих эмуляторов:


Но вылезает что то странное:


Подскажите, пожалуйста, как это исправить
    


Ответы

Ответ 1



Удалите все неработающие эмуляторы и установите их заново и будет Вам счастье

среда, 29 января 2020 г.

Различие в работе эмуляторов iPad и Android

#эмулятор #ipad #android #objective_c #производительность


Почему приложение (Objective-C) при запуске на эмуляторе для iPad работает быстрее,
чем на самом устройстве, а на эмуляторе для Android (Java приложение) работает медленнее,
чем на устройстве?    


Ответы

Ответ 1



Потому что в случае с iPad это не эмулятор, а симулятор. Эмулятор Android эмулирует ARM на x86, iPad же работает сразу на x86 (поэтому, например, нельзя в симуляторе iPad запустить приложение собранное для устройства). Соответственно, у любого современного компьютера ресурсов больше, чем у iPhone/iPad, поэтому приложение в симуляторе работает быстрее, чем на устройстве. Эмулятору же Android'а недостаточно ресурсов компьютера (я ещё не видел компьютера, на котором эмулятор не тормозил бы), он и без всяких приложений заметно медленнее телефонов/планшетов.

Ответ 2



Рекомендую прочитать статью на хабре о порте android x86: Как ускорить эмулятор Android на 400%

Ответ 3



У андроида именно эмулятор т.е. имитация работы процессора мобильного устройства на х86 компа, все действия при работе выполняются с дополнительным переводом инструкций одного проца под другой, а у iPhone это всего лишь симмуляция - библиотеки и какая-то урезанная версия оси откомпилированы под х86_64 и работают в нативном коде

среда, 22 января 2020 г.

Что означают такие понятия как: консоль, терминал, эмулятор терминала?

#консоль #эмулятор #терминал


Никак не могу чётко осознать структуру взаимосвязей между этими понятиями, поэтому
прошу упор в ответе делать не на свойства, а сразу на суть вещей.
    


Ответы

Ответ 1



Терминал - это устройство, при помощи которого человеки взаимодействуют с компьютером. Например, через банковский терминал можно взаимодействовать с банковским компьютером. Эмулятор терминала - это программа, которая выдаёт себя за терминал, но на деле им не является. Она может отличаться от настоящего терминала интерфейсом, архитектурой, функционалом, чем угодно. Главное, что компьютер считает её терминалом. Консолями называют обобщённо терминалы и их эмуляторы.

воскресенье, 15 декабря 2019 г.

Преобразование указателя на одномерный массив в указатель на двумерный

#эмулятор #массивы #указатели #cpp


В общем, для чего всё это нужно: есть почти полностью реализованный  эмулятор CHIP8.
Оперативная память у него состоит из ячеек, размером в 1 байт, и предоставляет диапазон
адресов от 000h до FFFh. Я её объявил как:

unsigned char memory[0x1000]; 


Видеопамять же находится в той же оперативной памяти с некоторым смещением, и занимает
диапазон от F00h до FFFh.

Если к оперативной памяти удобно обращаться как к одномерному массиву, то к видеопамяти
удобнее обращаться как к двумерному массиву типа bool[][] (потому, что дисплей монохромный,
и его пиксели имеют два состояния — "чёрный" и "белый").

Как правильно и безопасно получить указатель на двумерный массив [32][64] из указателя
на одномерный? Одномерный же массив получить легко:

bool *videomem = (bool *)memory + 0xF00;


А вот двумерный массив уже не получается:

bool *video_mem[64] = (bool *[64])memory + 0xF00;


Можно, конечно, создавать для видеопамяти отдельный массив (и многие программы адекватно
работают), но это снижает точность эмуляции (некоторые программы могут писать напрямую
в видеопамять CHIP8).
    


Ответы

Ответ 1



Попробуйте так: unsigned char memory[0x1000]; const size_t video_mem_row_size = 64; // или 0x40, раз уж всё в hex const size_t video_mem_offset = 0xF00; typedef unsigned char video_mem_row[video_mem_row_size]; video_mem_row* video_mem = (video_mem_row*)(memory + video_mem_offset); Проверка: http://ideone.com/mpflzb Если у вас 64 — это размер в битах, и вы оперируете битами, вам, судя по всему, понадобится немного другой код. unsigned char memory[0x1000] = {}; // обязательно инициализируйте! const size_t bits_in_byte = 8; const size_t video_mem_offset = 0xF00; const size_t video_mem_row_bitsize = 0x40; const size_t video_mem_row_stride = (video_mem_row_bitsize + (bits_in_byte - 1)) / bits_in_byte; typedef unsigned char video_mem_row[video_mem_row_stride]; video_mem_row* video_mem = (video_mem_row*)(memory + video_mem_offset); const size_t video_mem_number_of_rows = 0x20; bool get_video_bit(size_t row, size_t col) { if (row >= video_mem_number_of_rows || col >= video_mem_row_bitsize) throw std::invalid_argument("index"); unsigned char* p = &video_mem[row][col / bits_in_byte]; unsigned char mask = ((unsigned char)1) << col % bits_in_byte; return *p & mask; } void set_video_bit(size_t row, size_t col, bool value) { if (row >= video_mem_number_of_rows || col >= video_mem_row_bitsize) throw std::invalid_argument("index"); unsigned char* p = &video_mem[row][col / bits_in_byte]; unsigned char mask = ((unsigned char)1) << col % bits_in_byte; if (value) *p |= mask; else *p &= ~mask; } Проверка: http://ideone.com/2BBcM1 Я бы посоветовал обернуть это в класс. Если хотите, можно написать индексаторы в духе std::vector.

суббота, 7 декабря 2019 г.

Отладка на реальном устройстве (Nexus 7)

#android #eclipse #эмулятор #android_adb


Люди, помогите пожалуйста. Уже не знаю что и делать. Установил Android SDK, все как
полагается. Создаю первые приложения, код нормальный, компиляция ошибок не дает. Но
тестировать это все дело на эмуляторе - "адский ад".
У меня есть Asus Nexus 7 (планшетик). Как мне на нем производить отладку? Eclipse
и adb ну никак не видят его.
p.s. Да, я конечно же ввел планшет в режим "разработчика" и включил опцию "Отладка
по USB" 
p.s.2. Да, я вставляю USB в компьютер.
p.s.3. Дрова ставились с SDK Manager (также пробовал ставить с официального сайта ASUS)
РЕШЕНИЕ:
Абсолютно банальное: в планшете при подсоединении по USB, нужно выбрать режим камеры
(PTP). Это странно, но это работает. 
Не знаю с чем это связано, может быть это фича Andorid 4.2, может самого Asus Nexus
7. Но теперь все работает, всем огромное спасибо за помощь.    


Ответы

Ответ 1



Установи на компьютер PdaNet+ и забудь про проблемы коннекта:) Для минусующих: программа помогла в казалось бы безнадежной ситуации, когда Win 8 запрещает запускать программы с неподписанными драйверами, не уведомляя при этом владельца ОС - меня. Поэтому нужно закрыть все, вытащить девайс, установить PdaNet, воткнуть обратно девайс(должна появится в трее табличка "Девайс подключен") и снова запустить эклипс и после запускать проект - должен появится девайс в списке. UPD Думаю для корректной работы PdaNet ЖЕЛАТЕЛЬНО установить на компьютер HTC Sync. Каким-то боком он работает с данным ПО. Выявлено опытным путем при подключении девайса к интернету на компьютере. А если не помогает, то возможные варианты: Nexus 7 not visible over usb via “adb devices” from Windows 7 x64.

Ответ 2



РЕШЕНИЕ: Абсолютно банальное: в планшете при подсоединении по USB, нужно выбрать режим камеры (PTP). Это странно, но это работает. Спасибо огромное! У меня тоже сработало !!! До этого переставил кучу программ, ничего не работало.

Ответ 3



А если не срабатывает ни как медиа-устройство (МТР), ни как камера (РТР)? Пытаюсь подключиться через 7-дата-андроид-рекавери. Драйвера для юсб скачал с официального сайта асус. Отладку включил. Кабель подключл. Пишет, что не видит никаких андроид устройств и советует вкл. "отладку по юсб" и подсоединить кабель. Или лыжи не едут, или я ... что-то не так делаю. Правда у меня FonePad 7 (модель K00E), но в подключении к компу по юсб думаю разницы особой нет.

Ответ 4



Огромное спасибо DroidAlex - мне помогла программа PdaNet+, а решение с переключением на режим камеры наоборот ничего не дало. DroidAlex Почисти все, что могло установить свои драйвера(всякие Сони, НТС). Конфликт явно какой-то есть. Потом уже можешь пробовать любой вариант по ссылке в моем ответе.

пятница, 5 июля 2019 г.

Как на эмулятор закачать картинки/фотографии?

Как на эмулятор Windows Phone 8 закачать картинки/фотографии с компьютера (не из своей программы)?


Ответ

Создайте папку TestImages в проекте и добавьте туда изображения. Установите значение Build action в Content на файлы в свойствах Visual Studio Измените .csproj (правый клик на проекте, 'Unload Project' потом правый клик, 'edit .csproj') Добавьте условие настройки в строки, которые включают файлы в проекте, как этот: Добавьте следующий код в App constructor #if DEBUG if (Microsoft.Devices.Environment.DeviceType == DeviceType.Emulator) { EmulatorHelper.AddDebugImages(); } #endif Добавьте класс EmulatorHelper using System; using System.Collections.Generic; using System.IO.IsolatedStorage; using Microsoft.Xna.Framework.Media;
namespace MyPhotoApp { public static class EmulatorHelper { const string flagName = "__emulatorTestImagesAdded";
public static void AddDebugImages() { bool alreadyAdded = CheckAlreadyAdded(); if (!alreadyAdded) { AddImages(); SetAddedFlag(); } }
private static bool CheckAlreadyAdded() { IsolatedStorageSettings userSettings = IsolatedStorageSettings.ApplicationSettings;
try { bool alreadyAdded = (bool)userSettings[flagName]; return alreadyAdded; } catch (KeyNotFoundException) { return false; } catch (ArgumentException) { return false; } }
private static void SetAddedFlag() { IsolatedStorageSettings userSettings = IsolatedStorageSettings.ApplicationSettings; userSettings.Add(flagName, true); userSettings.Save(); }
private static void AddImages() { string[] fileNames = { "img1", "img2", "img3", "img4", "img5" }; foreach (var fileName in fileNames) { MediaLibrary myMediaLibrary = new MediaLibrary(); Uri myUri = new Uri(String.Format(@"TestImages/{0}.jpg", fileName), UriKind.Relative);
System.IO.Stream photoStream = App.GetResourceStream(myUri).Stream; byte[] buffer = new byte[photoStream.Length]; photoStream.Read(buffer, 0, Convert.ToInt32(photoStream.Length)); myMediaLibrary.SavePicture(String.Format("{0}.jpg", fileName), buffer); photoStream.Close(); } } } } Теперь у Вас есть проект, который автоматически добавляет тестовые изображения в фотогалерею, при условии, что: build Configuration установлена в 'Debug' приложение запущено в эмуляторе изображения еще не были добавлены Преимущество в том, что это не влияет на Release XAP по производительности или размеру. Источник

среда, 19 июня 2019 г.

Эмулятор от Android Studio - пропала панель с кнопками событий

Добрый день! Еще неделю назад, при запуске эмулятора андроид входящего в комплект Android Studio (2.2 preview 3), справа от окна эмулятора появлялась панель с кнопками (громкость, питание, вращение экрана и тд, в том числе была кнопка к доступу эмулирования событий (входящий звонок, входящее смс, подкл/откл питания и тд). В какой-то момент (возможно после обновлений) данная панель с кнопками пропала. Подскажите, в каких настройках ее можно включить.


Ответ

Я так понимаю это баг Preview версии, если не хотите откатываться то могу посоветовать использовать hotkeys (F1 -> Help -> вкладка Keyboard Shortcuts).

четверг, 25 октября 2018 г.

Преобразование указателя на одномерный массив в указатель на двумерный

В общем, для чего всё это нужно: есть почти полностью реализованный эмулятор CHIP8. Оперативная память у него состоит из ячеек, размером в 1 байт, и предоставляет диапазон адресов от 000h до FFFh. Я её объявил как:
unsigned char memory[0x1000];
Видеопамять же находится в той же оперативной памяти с некоторым смещением, и занимает диапазон от F00h до FFFh.
Если к оперативной памяти удобно обращаться как к одномерному массиву, то к видеопамяти удобнее обращаться как к двумерному массиву типа bool[][] (потому, что дисплей монохромный, и его пиксели имеют два состояния — "чёрный" и "белый").
Как правильно и безопасно получить указатель на двумерный массив [32][64] из указателя на одномерный? Одномерный же массив получить легко:
bool *videomem = (bool *)memory + 0xF00;
А вот двумерный массив уже не получается:
bool *video_mem[64] = (bool *[64])memory + 0xF00;
Можно, конечно, создавать для видеопамяти отдельный массив (и многие программы адекватно работают), но это снижает точность эмуляции (некоторые программы могут писать напрямую в видеопамять CHIP8).


Ответ

Попробуйте так: unsigned char memory[0x1000];
const size_t video_mem_row_size = 64; // или 0x40, раз уж всё в hex const size_t video_mem_offset = 0xF00; typedef unsigned char video_mem_row[video_mem_row_size];
video_mem_row* video_mem = (video_mem_row*)(memory + video_mem_offset); Проверка: http://ideone.com/mpflzb Если у вас 64 — это размер в битах, и вы оперируете битами, вам, судя по всему, понадобится немного другой код. unsigned char memory[0x1000] = {}; // обязательно инициализируйте!
const size_t bits_in_byte = 8; const size_t video_mem_offset = 0xF00;
const size_t video_mem_row_bitsize = 0x40; const size_t video_mem_row_stride = (video_mem_row_bitsize + (bits_in_byte - 1)) / bits_in_byte;
typedef unsigned char video_mem_row[video_mem_row_stride];
video_mem_row* video_mem = (video_mem_row*)(memory + video_mem_offset);
const size_t video_mem_number_of_rows = 0x20;
bool get_video_bit(size_t row, size_t col) { if (row >= video_mem_number_of_rows || col >= video_mem_row_bitsize) throw std::invalid_argument("index"); unsigned char* p = &video_mem[row][col / bits_in_byte]; unsigned char mask = ((unsigned char)1) << col % bits_in_byte; return *p & mask; }
void set_video_bit(size_t row, size_t col, bool value) { if (row >= video_mem_number_of_rows || col >= video_mem_row_bitsize) throw std::invalid_argument("index"); unsigned char* p = &video_mem[row][col / bits_in_byte]; unsigned char mask = ((unsigned char)1) << col % bits_in_byte; if (value) *p |= mask; else *p &= ~mask; } Проверка: http://ideone.com/2BBcM1 Я бы посоветовал обернуть это в класс. Если хотите, можно написать индексаторы в духе std::vector

четверг, 11 октября 2018 г.

Отладка на реальном устройстве (Nexus 7)

Люди, помогите пожалуйста. Уже не знаю что и делать. Установил Android SDK, все как полагается. Создаю первые приложения, код нормальный, компиляция ошибок не дает. Но тестировать это все дело на эмуляторе - "адский ад". У меня есть Asus Nexus 7 (планшетик). Как мне на нем производить отладку? Eclipse и adb ну никак не видят его. p.s. Да, я конечно же ввел планшет в режим "разработчика" и включил опцию "Отладка по USB" p.s.2. Да, я вставляю USB в компьютер. p.s.3. Дрова ставились с SDK Manager (также пробовал ставить с официального сайта ASUS) РЕШЕНИЕ: Абсолютно банальное: в планшете при подсоединении по USB, нужно выбрать режим камеры (PTP). Это странно, но это работает. Не знаю с чем это связано, может быть это фича Andorid 4.2, может самого Asus Nexus 7. Но теперь все работает, всем огромное спасибо за помощь.


Ответ

Установи на компьютер PdaNet+ и забудь про проблемы коннекта:)
Для минусующих: программа помогла в казалось бы безнадежной ситуации, когда Win 8 запрещает запускать программы с неподписанными драйверами, не уведомляя при этом владельца ОС - меня.
Поэтому нужно закрыть все, вытащить девайс, установить PdaNet, воткнуть обратно девайс(должна появится в трее табличка "Девайс подключен") и снова запустить эклипс и после запускать проект - должен появится девайс в списке.
UPD Думаю для корректной работы PdaNet ЖЕЛАТЕЛЬНО установить на компьютер HTC Sync. Каким-то боком он работает с данным ПО. Выявлено опытным путем при подключении девайса к интернету на компьютере.
А если не помогает, то возможные варианты: Nexus 7 not visible over usb via “adb devices” from Windows 7 x64