NexxDigital - компьютеры и операционные системы



рис.1 Иллюстрация работы Android устройства в режимах USB Host и Accessory (рисунок с сайта http://developer.android.com)

Отметим, что использование USB - не единственный способ связи с тем же самодельным устройством. Android позволяет использовать еще , NFC, Wi-Fi P2P, SIP, а также стандартное сетевое подключение . Так что в арсенале разработчика достаточно возможностей для осуществления своих самых смелых замыслов.

Другим распространенным вариантом связи с различными устройствами до сих пор является использование переходника USB-COM. Материал в сети по применению переходника USB-COM в Android есть - см., например, . Популярность такого подключения обусловлена наличием большого количества уже разработанных с использованием различных микроконтроллеров устройств, связь с которыми осуществляется с помощью COM-порта (последовательного порта), что лет 10 назад являлось почти стандартным способом передать данные от компьютера к самодельной «железке».

В сравнении с COM-портом, использование USB позволяет существенно повысить скорость передачи данных и сделать этот процесс удобным для пользователя. Cкорость передачи, которая даже в случае низкоскоростных устройств (клавиатуры, мыши, джойстики), составляет 10-1500 Кбит/c, простота и невысокая стоимость кабельной системы и подключений, самоидентификация устройств с автоматическим конфигурированием, скрытие подробностей электрического подключения от конечного пользователя (плюс возможность отключения кабеля без выключения устройств), контроль ошибок и их восстановление на уровне протокола - вот неоспоримые преимущества данной технологии (см. , с.12).

Вообще, говоря об использовании USB для передачи данных, нелишним будет упомянуть книгу П.Агурова «Интерфейс USB» . Она, хотя часто критикуется в сети и выпущена последний раз в 2006 году, не раз помогла найти верное решение при поиске информации по различным аспектам применения этой технологии. В книге рассмотрены вопросы: от выбора микросхемы и схемотехники для контроллера до написания программы микроконтроллера и примеров программирования передачи данных по протоколу USB со стороны компьютера. Нельзя не указать и "первоисточник" данных по этому вопросу - сайт некоммерческой организации USB IF (USB Implementers Forum), занимающейся разработкой спецификаций этого интерфейса - , правда данный материал на английском языке. Однако именно там вы найдете исчерпывающие сведения об устройстве интерфейса USB. Есть неплохой перевод частей спецификации - . Интересующимся программными решениями со стороны микроконтроллера также можно посмотреть ссылку .

Данная статья адресована прежде всего тем, у кого есть какое-либо электронное устройство (разработанное самостоятельно или кем-то еще), протокол обмена данными с которым хорошо известен (например, уже есть программа, работающая с этим устройством в Windows/Linux) и хотелось бы иметь программу, работающую с ним в Android.

Немного о классах USB-устройств

Необходимо отметить, что разработка программного обеспечения для обмена данными с конкретным устройством сильно зависит от его реализации на уровне микроконтроллера. Привести примеры программ связи для всех типов USB-устройств в рамках одной статьи, по понятным причинам, невозможно (начальные сведения о программировании различных типов устройств можно почерпнуть в ). Однако, мы ограничимся тем, что приведем код, реализующий поиск устройства и доступ к его контрольным точкам для обмена информацией. Также разберем отправку данных на примере одного из типов USB-устройств, а именно, класса устройств HID (human interface device - класс устройств для взаимодействия с человеком). Этот класс включает в себя «медленные» устройства, такие как клавиатура, мышь, джойстик и примеров его реализации с помощью различных микроконтроллеров в сети достаточно (есть, например, и в ).

Почему именно класс HID так полюбился изготовителям различных самодельных устройств? Процитируем Википедию : «Помимо детальных спецификаций классических устройств ввода (типа клавиатур и мышек) стандарт HID определяет особый класс устройств без детальных спецификаций. Этот класс именуется USB HID Consumer Control и представляет собой по сути нерегламентированный канал связи с устройством. При этом устройство пользуется теми же стандартными для операционной системы драйверами что и мышка с клавиатурой. Таким образом, можно создать USB устройство которое не требует создания и инсталляции специальных драйверов в большинстве распространенных компьютерных операционных систем». Остается добавить только, что работает эта спецификация и в ОС Android (не исключая прошивок CyanogenMod).

Одним из вариантов обмена данными с HID-устройством является передача по прерываниям (interrupt transfer), которая используется в том случае, когда необходимо передать пакеты данных небольшого размера (максимальный размер пакета зависит от скорости передачи и составляет от 64 до 1024 байт) через заданный временной интервал. Пакет для передачи называется репортом (англ. - report, см. с.71, 95). Такой длины репорта обычно вполне хватает для обмена информацией с самодельным устройством, 64 байта информации в одном пакете, например, - это довольно много для контроллера, ведь для передачи состояний светодиода или простейшего датчика достаточно 1 бита информации.

Необходимые инструменты

Итак, нам понадобятся - планшет или телефон с Android версии не ниже 3.1. Здесь необходимо отметить, что вышеуказанный USB Host API полностью реализован не на всех мобильных устройствах (об этом упоминается и на сайте developer.android.com, см. ссылку ). В некоторых планшетах/телефонах разъем USB используется только для зарядки и связи с персональным компьютером. Еще раз отправлю читателя к списку мобильных устройств, пригодных или непригодных для наших опытов (см. ).

Понадобится также какое-либо USB-устройство (для первых опытов будет достаточно обычного USB-флеш-накопителя), переходник OTG (On-The-Go - см. рис. 2) и/или шнур USB для связи с устройством. В Википедии по поводу OTG говорится: «При подключении через USB OTG ранг устройства (ведущий или ведомый) определяется наличием или отсутствием перемычки между контактами 4 и 5 в штекере соединительного кабеля. В USB OTG кабеле такая перемычка устанавливается лишь в одном из двух разъемов (см. ).» Соответственно, нам необходима такая перемычка со стороны мобильного устройства.



Рис.2 Различия в схеме обычного USB-кабеля и OTG-кабеля (рисунок с сайта http://tech.firstpost.com)

Такой OTG-кабель для Вашего устройства можно спаять и самостоятельно. Для этого необходимо купить в радиомагазине подходящий разъем, плюс автор, например, использовал старый кабель от переносного жесткого диска:

Неплохим подспорьем в работе будет также программа USB Device Info, установленная из хранилища Google Play Market. Программа умеет определять подключенные к USB-разъему планшета/телефона устройства как с помощью Java API так и с помощью ядра Linux. То есть, если Ваше устройство не определилось с помощью Java USB Host API в USB Device Info, то, с большой вероятностью, тщетно будет использовать для этого мобильного устройства какую-либо (в том числе и свою) Android-программу, написанную с помощью Java и USB Host API.

Иногда, также, очень полезной бывает информация, выводимая командой lsusb операционной системы Linux. С ключами -v и -d lsusb выводит о USB-устройстве все, или почти все, что необходимо разработчику программного обеспечения для устройств этого класса (см. рис.3).



Рис.3 Пример вывода команд lsusb и lsusb -v -d

Далее, необходим компьютер с установленным Android SDK и интегрированной средой разработки (IDE) Eclipse с плагином ADT (хотя можно обойтись и только SDK). Как создать и установить приложение для Android можно посмотреть, например, в , или в сети Интернет.

Ну и, конечно, необходимо хотя бы а также желание добиться результата, без него никак! Отмечу, что на выяснение некоторых технических вопросов применения USB в Android автором, потребовались недели кропотливого поиска информации.

Классы Java для работы с USB в Android API

Итак, как говорится на сайте разработчиков USB Host API для Android (см. ) - «прежде чем начать, важно понять какие классы вы будете использовать в работе». В таблице 1 приведено описание важнейших классов для работы с USB Host API (попытка перевода информации с http://developer.android.com).

Таблица 1. Описание классов для работы с USB в Android

Название класса Описание
UsbManager Allows you to enumerate and communicate with connected USB devices.
Позволяет определять подключенное USB-устройство и обмениваться с ним данными.
UsbDevice Represents a connected USB device and contains methods to access its identifying information, interfaces, and endpoints.
Представляет подключенное USB-устройство и содержит методы для доступа к его идентификационной информации, интерфейсам, и конечным точкам.
UsbInterface Represents an interface of a USB device, which defines a set of functionality for the device. A device can have one or more interfaces on which to communicate on.
Представляет «интерфейс» USB-устройства, который определяет набор функций для данного устройства. Одно устройство может иметь один или несколько интерфейсов для обмена информацией.
UsbEndpoint Represents an interface endpoint, which is a communication channel for this interface. An interface can have one or more endpoints, and usually has input and output endpoints for two-way communication with the device.
Представляет «конечную точку» интерфейса, которая и является каналом связи для этого интерфейса. Интерфейс может иметь одну и более конечных точек, и обычно имеет конечные точки для получения информации и для ее передачи.
UsbDeviceConnection Represents a connection to the device, which transfers data on endpoints. This class allows you to send data back and forth sychronously or asynchronously.
Представляет «подключение» к данному устройству. Необходимо для передачи данных в конечную точку. Этот класс позволяет получать данные или передавать синхронно или асинхронно.
UsbRequest Represents an asynchronous request to communicate with a device through a UsbDeviceConnection.
Представляет асинхронный запрос на обмен данными с устройством через UsbDeviceConnection.
UsbConstants Defines USB constants that correspond to definitions in linux/usb/ch9.h of the Linux kernel..
Определяет константы, которые соответствуют определениям в linux/usb/ch9.h ядра Linux.

Практически во всех случаях применения USB Host API программист использует эти классы в своей работе. Алгоритм их применения выглядит примерно так: определяем устройства (цель - программный доступ к классу UsbDevice), подключенные к хосту (мобильному устройству), с помощью UsbManager. Когда программный доступ устройству получен, необходимо определить соответствующие UsbInterface и UsbEndpoint для общения с ним. Как только вы получили в свое распоряжение конечную точку, откройте UsbDeviceConnection, чтобы общаться с USB-устройством. Если конечная точка работает в режиме асинхронной передачи, используем класс UsbRequest.

Давайте попробуем со всем этим разобраться создав простое приложение, которое, используя этот API, определит подключенное к хосту с ОС Android устройство и выведет о нем некоторую информацию на экран телефона или планшета.

Создаем проект

В Eclipse проект создается с помощью пунктов меню File->New->Android Application Project. Заметим также, что код, приведенный ниже заимствован из приложений-примеров, поставляемых с Android SDK (папка android sdk samples/android-N(API Level)/USB) речь идет о программе управления USB-игрушкой Missile Launcher (см. рис. 4) Примеры приложений загружаются через Android SDK Manager (нужно отметить пункт - Samples for SDK ). В листингах, приведенных ниже, примеры кода снабжены комментариями, которые объясняют суть происходяшего.


Рис.4 Забавная игрушка "Ракетозапускалка"

Создавая проект не забудьте отметить нужный API Level в опции Minimum Requared SDK (API Level 12, соответствующий версии Android 3.1 /Honeycomb/, или выше). В проекте будет очень простой интерфейс пользователя - главное окно (Activity) и TextView для вывода информации. Подобный проект подробно рассмотрен в .

В созданном автоматически классе для Activity нашего проекта необходимо определить следующие экземпляры классов для работы с USB:

private TextView lgView;
private UsbManager mUsbManager;
private UsbDevice mDevice;
private UsbDeviceConnection mConnection;
private UsbEndpoint mEndpointIntr;

LgView = (TextView) findViewById(R.id .logTextView ) ;

и получаем доступ к классу UsbManager

MUsbManager = (UsbManager) getSystemService(Context .USB_SERVICE ) ;

Создадим еще обработчик события onResume(). Добьемся цели - чтобы информация о подключенных устройствах обновлялась при активизации окна нашего приложения (см. Листинг 1).

Листинг 1. Обработчик события onResume()

public void onResume() {
super .onResume () ;

//заполняем контейнер списком устройств
HashMap< String , UsbDevice> deviceList = mUsbManager.getDeviceList () ;
Iterator< UsbDevice> deviceIterator = deviceList.values () .iterator () ;

lgView.setText ( "Devices Count:" + deviceList.size () ) ;

while (deviceIterator.hasNext () ) {
UsbDevice device = (UsbDevice) deviceIterator.next () ;

//пример определения ProductID устройства
\n " + "Device ProductID: " + device.getProductId () ) ;
}
//определяем намерение, описанное в фильтре
// намерений AndroidManifest.xml
Intent intent = getIntent() ;
lgView.setText ( lgView.getText () + "\n " + "intent: " + intent) ;
String action = intent.getAction () ;

//если устройство подключено, передаем ссылку в
//в функцию setDevice()
UsbDevice device = (UsbDevice) intent.getParcelableExtra (UsbManager.EXTRA_DEVICE ) ;
if (UsbManager.ACTION_USB_DEVICE_ATTACHED .equals (action) ) {
setDevice(device) ;
lgView.setText ( lgView.getText () + "\n " + "UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action) is TRUE" ) ;
} else if (UsbManager.ACTION_USB_DEVICE_DETACHED .equals (action) ) {
if (mDevice != null && mDevice.equals (device) ) {
setDevice(null ) ;
lgView.setText ( lgView.getText () + "\n " + "UsbManager.ACTION_USB_DEVICE_DETACHED.equals(action) is TRUE" ) ;
}
}

Далее, для Activity создадим функцию setDevice(), необходимую для работы с нашим устройством (см. Листинг 2). В обработчике onResume() и в функции setDevice() мы в точности выполнили алгоритм применения USB Host API, описанный в предыдущем разделе.

Листинг 2. Функция setDevice()

private void setDevice(UsbDevice device) {
lgView.setText ( lgView.getText () + "\n " + "setDevice " + device) ;

//определяем доступные интерфейсы устройства
if (device.getInterfaceCount () != 1 ) {

LgView.setText ( lgView.getText () + "\n " + "could not find interface" ) ;
return ;
}
UsbInterface intf = device.getInterface (0 ) ;

//определяем конечные точки устройства
if (intf.getEndpointCount () == 0 ) {

LgView.setText ( lgView.getText () + "\n " + "could not find endpoint" ) ;
return ;
} else {
lgView.setText ( lgView.getText () + "\n " + "Endpoints Count: " + intf.getEndpointCount () ) ;
}

UsbEndpoint epIN = null ;
UsbEndpoint epOUT = null ;

//ищем конечные точки для передачи по прерываниям
for (int i = 0 ; i < intf.getEndpointCount () ; i++ ) {
if (intf.getEndpoint (i) .getType () == UsbConstants.USB_ENDPOINT_XFER_INT ) {
if (intf.getEndpoint (i) .getDirection () == UsbConstants.USB_DIR_IN ) {
epIN = intf.getEndpoint (i) ;
lgView.setText ( lgView.getText () + "\n " + "IN endpoint: " + intf.getEndpoint (i) ) ;
}
else {
epOUT = intf.getEndpoint (i) ;
lgView.setText ( lgView.getText () + "\n " + "OUT endpoint: " + intf.getEndpoint (i) ) ;
}
} else { lgView.setText ( lgView.getText () + "\n " + "no endpoints for INTERRUPT_TRANSFER" ) ; }
}

MDevice = device;
mEndpointIntr = epOUT;

//открываем устройство для передачи данных
if (device != null ) {
UsbDeviceConnection connection = mUsbManager.openDevice (device) ;
if (connection != null && connection.claimInterface (intf, true ) ) {

LgView.setText ( lgView.getText () + "\n " + "open device SUCCESS!" ) ;
mConnection = connection;

} else {

LgView.setText ( lgView.getText () + "\n " + "open device FAIL!" ) ;
mConnection = null ;
}
}
}
}

В дополнение к приведенному коду, который, как уже наверняка догадался внимательный читатель, открывает устройство для приема-передачи данных, остается лишь задействовать протокол обмена данными, который, повторюсь, должен быть хорошо известен разработчику. Приведем лишь, как было обещано, код, который отправит HID устройству некоторый пакет данных message используя передачу по прерываниям, класс UsbRequest и соответствующую конечную точку - см. Листинг 3.

Листинг 3. Пример кода для отправки данных устройству

//определение размера буфера для отправки
//исходя из максимального размера пакета
int bufferDataLength = mEndpointIntr.getMaxPacketSize () ;

lgView.setText ( lgView.getText () + "\n " + mEndpointIntr.getMaxPacketSize () ) ;

ByteBuffer buffer = ByteBuffer.allocate (bufferDataLength + 1 ) ;

UsbRequest request = new UsbRequest() ;

buffer.put (message) ;

request.initialize (mConnection, mEndpointIntr) ;

request.queue (buffer, bufferDataLength) ;

if (request.equals (mConnection.requestWait () ) )

//отправка прошла успешно
//lgView.setText(lgView.getText() + "\n" + "sending CLEAR!!!");

catch (Exception ex)

//что-то не так...
//lgView.setText(lgView.getText() + "\n" + "sending not clear...");

Фильтрация устройств в AndroidManifest.xml

Хотя в нашем приложении нет нужды в поиске конкретного устройства с известными VID (Vendor-ID) и PID (Product-ID), инженеры Google не приводят примеров приложений без секции intent-filter в манифест файле, и автору не удалось добиться работы программы без фильтрации устройств в AndroidManifest.xml .

Напомню, что Vendor-ID и Product-ID это уникальные идентификаторы USB-устройств. То есть, используя фильтрацию, можно создать приложение, которое взаимодействует лишь с определенным устройством или каким-то классом устройств. Отметим, что производители устройств должны согласовать эти номера с организацией USB IF.

Приложение, манифест файл которого приведен в листинге 4, а файл с условием фильтрации в листинге 5, например, с успехом распознает подключенные к мобильному устройству USB-флеш-накопители, но не распознает клавиатуру и мыши, имеющиеся у автора. Это приложение вместе с исходным кодом можно скачать по ссылке .

Листинг 4. Файл AndroidManifest.xml


" > http://schemas.android.com/apk/res/android"
> package="ru.learn2prog.usbhostexample"
android:versionCode="1"
android:versionName="1.0" >


android:minSdkVersion ="12"
android:targetSdkVersion ="14" />


android:allowBackup ="true"
android:icon ="@drawable/ic_launcher"
android:label ="@string/app_name"
android:theme ="@style/AppTheme" >

android:name ="ru.learn2prog.usbhostexample.MainActivity"
android:label ="@string/app_name" >
>

"android.intent.category.DEFAULT" />

"android.intent.category.LAUNCHER" />

>

>

>
"android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource ="@xml/device_filter" />
>
>

>

Листинг 5. Файл фильтра device_filter.xml (каталог /res/xml)

>

>

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

Литература/Ссылки: 11.
12.
13. http://developer.android.com/guide/topics/connectivity/usb/host.html - обзор классов, необходимых для работы с USB в Android
14. ссылка на исходники приложения

USB (Universal Serial Bus) – дословно «универсальная последовательная шины». Это последовательный интерфейс для передачи данных, который широко используется в электронике и вычислительной технике, и мобильные устройства на основе операционной системы Android – не исключение. Однако не всегда всё происходит достаточно гладко, могут возникать те или иные проблемы.

Однако, всё по порядку. Сначала давайте разберемся, какие существуют виды USB-разъемов. Всего их пять:

Слева направо: microUSB, miniUSB, B-type, A-type «мама», A-type «папа».

microUSB – самый небольшой из разъемов, используется в миниатюрных электронных устройствах вроде смартфонов, телефонов, планшетных компьютеров, электронных книг и так далее. В последнее время приобрел наибольшее распространение среди Android-устройств благодаря своей универсальности, практически вытеснив miniUSB.

miniUSB – несколько больше microUSB, но также используется в небольших электронных устройствах. В брендовых планшетах и смартфонах на Android практически не используется на сегодняшний день, хотя ранее был широко распространен. Впрочем, встречается в китайских девайсах, более того, благодаря дешевизне и простоте, некоторые более именитые китайские производители возвращаются к miniUSB, после некоторого периода установки microUSB в свои устройства. Чаще всего встречается в фотоаппаратах, камкордерах и так далее.

B-type – разъем, который чаще всего можно встретить в принтерах, сканерах и другой компьютерной периферии, когда размер особого значения не имеет.

A-type «мама» (приемник) – разъем, который устанавливается на персональных компьютерах и иногда на планшетах, для подключения коннектора A-type. Также этот тип разъема можно увидеть в USB-удлинителях и USB OTG кабелях.

A-type «папа» (коннектор) – для подключения в соответствующий приемник A-type.

Отдельно стоит упомянуть расширение спецификации USB 2.0 – USB OTG (USB On The Go), которое предназначено для лёгкого соединения периферийных устройств USB между собой. Это особенно актуально для планшетных компьютеров, смартфонов, электронных книг и других устройств на основе Android, так как при поддержке данной спецификации и при наличии соответствующего переходника-удлинителя USB OTG к мобильному устройству напрямую можно подключить флэш-накопители, фотоаппараты, внешние USB HDD и так далее.

Существует также некоторое количество проприетарных USB-разъемов, которые создают отдельно взятые компании, но постепенно такая практика уходит в прошлое – рынок в целом склоняется в сторону универсальных разъемов, и это несомненный плюс.

Теперь разберемся, что делать, если при подключении Android-устройства через USB-кабель к компьютеру, мобильный аппарат не определяется, а только заряжается (последнее свидетельствует о работоспособности разъема в целом – питание на него подается).

Для начала, перепроверяем, стоит ли галка в пункте «Настройки» - «Подключение к ПК» - «Спрашивать». Если она установлена, пробуем снять её и поставить заново.

Если это не помогло, пробуем использовать другой USB-кабель (чудеса китайской индустрии особенно склонны к выходу из строя), подсоединить его к другому USB-порту компьютера (настоятельно рекомендуется использовать порты, которые находятся сзади системного блока, если речь идёт о настольном ПК, так как данные порты непосредственно, без удлинителей, распаяны на материнской плате), в конце концов – попробовать другой компьютер для подключения, если есть такая возможность. Если ничего из вышеперечисленного не помогло, можно попробовать заменить флэш-карту на другую. Также не рекомендуется пользоваться никакими лишними переходниками или удлинителями – очень часто в них кроется причина неполадки.

Всё еще есть проблемы с подключением к ПК через USB? Не беда, идёт дальше. Запрещаем или удаляем Task Killer, если он установлен, или добавляем «Синхронизацию с ПК» в список исключений – данное приложение может банально запрещать устройству синхронизироваться с компьютером. Также можно попробовать включить «Отладку USB». Данный пункт находится в меню «Настроки» - «Приложения» - «Разработка»:

Если проблемное устройство – мобильный гаджет от Samsung, и компьютер его «не видит» ни через Kies, ни через Odin, то стоит попробовать полностью удалить Kies, все старые драйвера Samsung и Samsung PC Studio, после чего установить Kies заново. То же самое касается и аппаратов HTC с фирменной программой HTC Sync.

Может также помочь выбор драйвера для USB-устройства вручную. Для этого переходим в «Диспетчер устройств» в «Панели управления» Windows. Ищем проблемное устройство – оно будет отображаться с восклицательным знаком. Нажимаем на нём правой кнопкой мыши и выбираем «Обновить драйвер» - «Выбрать установку драйвера с компьютера» - «Выбрать драйвера из уже установленных». В списке выбираем универсальный контроллер USB – составное USB-устройство (иногда может подойти и драйвер от Microsoft). После этого система самостоятельно установит выбранный драйвер и устройством можно будет пользоваться в режиме USB-флэшки. Если вдруг выдало ошибку с «Синим экраном смерти», то необходимо перезагрузить компьютер в безопасном режиме, не отключая устройство. После загрузки Windows в безопасном режиме, ищем в «Диспетчере устройств» наш мобильный аппарат, нажимаем на нём правой кнопкой и удаляем драйвер. После этого можно попробовать «подсунуть» системе другой драйвер для работы с подключенным к USB девайсом – после чего оно может определиться нормально.

Как вариант, можно установить Android USB Driver. Также большинство программ для синхронизации Android-устройства с персональным компьютером, вроде HTC Sync или Samsung Kies, устанавливают свои драйвера. Важно – рекомендуем отключать антивирусные программы на компьютеры во время установки драйверов.

Иногда может помочь сброс к заводским настройкам (так называемый wipe) через настройки мобильного девайса, или же через режим Recovery. Сброс удалит все установленные пользователем приложения и восстановит стандартные заводские настройки.

Драйвера для устройств, перед тем как их переустановить, очень желательно еще и корректно удалить с персонального компьютера. Они зачастую скрываются в «Диспетчере устройств», как только девайс отключается или подает команду на скрытие. Часто «одноименные» драйвера могут конфликтовать из-за несоответствия версий. Что ж, приступим к очистке списка неиспользуемых устройств, что часто может быть причиной «неработоспособности» Android-гаджета при его подключении посредством USB. Во-первых, отключаем все внешние USB-устройства от компьютера. Создаем переменную среду DEVMGR_SHOW_NONPRESENT_DEVICES со значением 1. Чтобы сделать это, кликаем правой кнопкой мышки на «Мой компьютер», выбираем «Свойства», «Дополнительно», нажимаем «Переменные среды». В открывшемся окне вверху нажимаем кнопку «Создать». В поле «Имя переменной» вводим:

DEVMGR_SHOW_NONPRESENT_DEVICES

В поле «Значение переменной» вводим, соответственно, 1. Нажимаем два раза «Ок», чтобы закрыть меню.

Создав данную переменную, «Диспетчер устройств» будет показывать все установленные в системе драйвера, в том числе скрытые или когда-либо подключавшиеся к персональному компьютеру.

Заходим в «Диспетчер устройств», в пункте меню «Вид» выбираем «Показывать скрытые устройства». Теперь можно приступать к очистке операционной системы от разного «хлама». Для начала открываем раздел «Дисковые устройства». Нюанс в том, что при каждом подключении новой флешки для неё ставится новый драйвер, причем он ставится даже если подключить ту же самую флешку, но в другой USB-порт. Драйвера всех отключенных сменных носителей можно смело удалять, так как при подключении их к компьютеру драйвера для них будут установлены заново. Среди этих драйверов можно обнаружить и драйвер вашего Android-устройства, возможно установленный неправильно, и возможно даже не один. Данные записи также смело можно удалять, так как они могут вызывать неполадки – в любом случае, при переподключении имеющегося Android-девайса драйвер для него будет установлен заново или будет выдан запрос на установку пользователем. В разделе «Скрытые» устройства можно удалять абсолютно все скрытые (серые) устройства, так как это не что иное, как неудачные попытки поставить драйвер для какого-либо девайса, и они точно не нужны в системе. В разделе «Тома запоминающих устройств» также можно удалить все скрытые (серые) записи, так как это «буквы», присвоенные подключаемым ранее флешкам – в любом случае, при новом подключении флеш-накопителя, они будут присвоены заново. В разделе «Контроллеры универсальной последовательной шины USB» можно удалить все скрытые (серые) устройства. После выполнения очистки операционной системы от ненужных драйверов перезагружаем компьютер. После перезагрузки подключаем Android-девайс, он будет обнаружен операционной системой Windows как новое устройство, и для него автоматически будут установлены драйвера, или же вы можете установить нужные драйвера вручную. После еще одной перезагрузки компьютера все проблемы с конфликтными драйверами должны уйти в прошлое.

Обычная карта памяти, которая используется в вашем мобильном аппарате, может стать накопителем, нужно только знать, как включить юсб хранилище на андроид . Обозначенная задача звучит несколько пугающе для несведущего человека. А на самом деле она лишь чуть сложнее, чем , и пугаться совершенно нечего. Для ее выполнения вам понадобятся:

Мобильное устройство, работающее на базе операционной системы андроид;
- Компьютер с USB-портом;
- USB-кабель, который поставляется в комплекте с гаджетом.

Теперь можно переходить к самому процессу включения юсб хранилища.

Включаем юсб хранилище

Действия, которые вам предстоит совершить, абсолютно несложные, и с ними справится даже самый начинающий пользователь. Итак, от вас потребуется:

1) Подключить работающее андроид-устройство к компьютеру, используя USB-кабель;

2) Когда ПК «увидит» гаджет, на его дисплее появится надпись «Включить USB-накопитель», вам нужно будет нажать на эту надпись;

3) Некоторые модели автоматически включают USB-накопитель, когда аппарат подключается к компьютеру. В этом случае нажимать больше ничего не нужно;

4) После этих действий на мониторе ПК появится строка «Открыть папку для просмотра файлов», а новое оборудование, подключенное через кабель USB, будет распознано, как дисковой накопитель.

Вот и все, теперь вы знаете, как включить юсб хранилище на андроид. А дальше вы можете работать с SD-картой и файлами, которые на ней находятся, как с обычной флешкой. И это такая же полезная возможность, как для определения точности его работы.

Что делать, если включить юсб хранилище на андроид не удается

Редко, но все же случаются ситуации, когда включить юсб хранилище не получается. Эту проблему можно решить следующим образом:

1) Зайдите в основное меню андроид-устройства;

2) Найдите там раздел «Настройки» и выберите «Сеть»;

3) Здесь перейдите в «Настройки USB»;

4) Нажмите на строчку «Подключить USB-накопитель»;

5) Теперь подсоедините мобильный аппарат к компьютеру и удостоверьтесь, что проблема решена.

После того, как работа с SD-картой и файлами, хранящимися на ней, будет закончена, вам нужно нажать на надпись «Выключить USB-накопитель», которая будет отображаться на дисплее смартфона или планшета. Автоматически карта памяти отключится от компьютера.


Видеозаписи по теме:


Другие новости по теме:




Просмотрено: 21 689 раз

__________ _____________ __________ ______ ____ ______ ______________ __________ ________ ______ ________ _____ ________ _______ _____ _________ ____ ______ _____ ______ ___ __________ ____ _______ ______ ______ ______ ________ ______ ____ ________ ____ ________ _______ ______

Если в андроид устройстве стоит галочка "отладка по usb", то комп не увидит накопитель. Многие пользователи думают, что устройство не исправно, а нужно лишь зайти в "разработчики" и отключить галочку на против отладки



Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter
ПОДЕЛИТЬСЯ:
NexxDigital - компьютеры и операционные системы