2012-01-10 19 views
2

私はアンドロイドマーケットにアプリを持っており、ユーザーはデバイスを自分のコンピュータに接続して、音楽をappsフォルダに追加することがよくあります。私は具体的に説明しているアンドロイドのアプリケーションは、USB接続モードが有効になっている間、SDカードと通信することはできません。明らかに、これは十分に愚かな証拠ではありません。 USBが接続されている場合、Javaで検出する方法はありますか?私はそれが放送受信機で行われていることを見てきましたが、これはそれを行うのは馬鹿げた方法です。これは、ユーザーがUSBに接続した後でアプリケーションを起動した場合は機能しません。より良い方法があるはずです。アンドロイドでUSB接続モードが有効になっているかどうかを確認する方法は?

答えて

1

これは、次のようになります。Check USB Connection Status on Android

彼らは放送受信機を利用して行いますが。これは愚かなことをする方法だと言いますが、それについてもっと具体的にすることはできますか?

アプリの起動後に検出できない場合はありません。引用

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

+0

は、「それはアプリが起動した後、あなたがそれを検出することができない場合ではありません。」私はあなたが言ったことの反対を意味しました。あなたは、USBが接続されているか切断されている場合にのみブロードキャストを受信するので、接続されているかどうかは分かりません。 – NJGUY

1
何をする必要があるだろうことは以下のクラスのための <Receiver>エントリの下に、あなたのAndroidManifest.xmlに

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

を置くことであろう

A1:あなたは「ユーザーがデバイスをコンピュータに接続して音楽をアプリケーションフォルダに追加することが多い」と言いました.Sd ca RDはMassStorageモードでPCに接続された、次のようにこれを確認することができます。

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); 
} 

上記の方法で返された意図は、メッセージあなたはPCにUSBケーブルを接続する前に逃しました。

は、詳細については、以下のリンクを参照してください。 http://www.androidadb.com/source/toolib-read-only/frameworks/base/core/java/android/hardware/usb/UsbManager.java.html

関連する問題