Как проверить, включен ли режим USB на Android? - PullRequest
2 голосов
/ 10 января 2012

У меня есть приложение на рынке Android, и пользователи часто подключают свои устройства к своим компьютерам, чтобы добавить музыку в папку приложений.Я специально указал в инструкции, что приложения для Android не могут общаться с SD-картой, пока включен режим USB-подключения.Видимо, это недостаточно глупое доказательство.Есть ли способ обнаружить в Java, если USB подключен?Я видел, как это делается с широковещательными приемниками, но это такой глупый способ сделать это.Это не будет работать, если пользователь запускает приложение после подключения к USB.Должен быть лучший способ.

Ответы [ 2 ]

2 голосов
/ 10 января 2012

Это похоже на следующее: Проверка состояния USB-подключения на Android

Хотя они действительно используют широковещательные приемники.Вы говорите, что это глупый способ делать вещи, но можете ли вы быть более конкретным по этому поводу?

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

<intent-filter>
<action android:name="android.intent.action.ACTION_UMS_CONNECTED"/>
<action android:name="android.intent.action.ACTION_UMS_DISCONNECTED"/>

в ваш AndroidManifest.xml под записью <Receiver> для следующего класса:

public class IntentReceiver extends BroadcastReceiver {

        @Override

        public void onReceive(Context context, Intent intent) {

                // TODO Auto-generated method stub

                if(intent.getAction().equals(Intent.ACTION_UMS_CONNECTED)){

                        Toast.makeText(context, "mounted", Toast.LENGTH_LONG).show();

                        Intent myStarterIntent = new Intent(context, tst.class);

                         myStarterIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                        context.startActivity(myStarterIntent);

                }

        }

}

`

Цитируемые источники: http://www.anddev.org/start_activity_on_usb_connect-t8814.html

1 голос
/ 20 апреля 2012

A1: Вы сказали, что «пользователи часто подключают свои устройства к своим компьютерам для добавления музыки в папку приложений», я думаю, вы имеете в виду, что SD-карта подключена к ПК в режиме MassStorage, вы можете проверить это следующим образом:

String state = Environment.getExternalStorageState();
if (Environment.MEDIA_SHARED.equals(state)) {
    // Sd card has connected to PC in MSC mode
}

A2: Вы сказали: «Это не будет работать, если пользователь запускает приложение после подключения к USB», я не могу с вами согласиться, в ICS вы можете зарегистрировать приемник для прослушивания android.hardware.action.USB_STATE изменений, намерения система транслируется в режиме STICKY , то есть, даже если приемник в вашем приложении зарегистрирован после подключения по USB-кабелю, вы также можете получить это сообщение:

Intent intent = context.registerReceiver(...);
if (intent != null) {
    boolean isConnected = intent.getBooleanExtra(USB_CONNECTED, false);
    boolean isMscConnection = intent.getBooleanExtra(USB_FUNCTION_MASS_STORAGE, false);
}

намерение, возвращенное в методе, упомянутом выше, сообщение , которое вы пропустили до подключения USB-кабеля к ПК.

подробности см. По ссылке ниже: http://www.androidadb.com/source/toolib-read-only/frameworks/base/core/java/android/hardware/usb/UsbManager.java.html

...