5

Android Studio 経由で ADK を使用して mbed を制御する手順に従っています

ただし、それらの mbed adkport コード(スクロールダウンして adkport ハイパーリンク) にはこれらのインポートが必要です

import com.android.future.usb.UsbAccessory;
import com.android.future.usb.UsbManager;

開発者の解決策は android.hardware.usb に切り替えることであると示唆する別のスレッドに気付きましたが、そうすると、ハードウェア ベースのパッケージがgetAccessoryおよびgetInstanceシンボルをサポートしていないため、3 つの異なる行が機能しません。

この問題の解決策はありますか? それについて私の頭を得ることができません

代わりに android.hardware.usb を使用するようにコードを置き換える手順に従ってみましたが、それでも独自のandroid 開発者ルーチンで問題が発生します

     //mManager = UsbManager.getInstance(context);
    UsbManager mManager = (UsbManager) getSystemService(Context.USB_SERVICE);

ただし、現在は getSystemService を認識しません

ここで失敗します。

public void setup(Context context)
{

    //mManager = UsbManager.getInstance(context);
    UsbManager mManager = (UsbManager) getSystemService(Context.USB_SERVICE);  //<-----
    UsbAccessory[] accessoryList = mManager.getAccessoryList();
    PendingIntent mPermissionIntent = PendingIntent.getBroadcast(context, 0,
            new Intent(ACTION_USB_PERMISSION), 0);
    IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);
    context.registerReceiver(mUsbReceiver, filter);
    mManager.requestPermission(accessoryList[0], mPermissionIntent);


    if (accessoryList[0] != null) {

        mAccessory = accessoryList[0];
        if(mManager.hasPermission(mAccessory))
        {
        openAccessory(mAccessory);
        }
    }

}
4

2 に答える 2

1

getSystemService()activityアクティビティを使用して、非アクティビティ クラス内または非アクティビティ クラス内から呼び出すことができるメソッドですcontext

関数setup()は a を渡して呼び出す必要があるためContextusbManager = (UsbManager) context.getSystemService(Context.USB_SERVICE);問題は解決します。

于 2016-03-18T11:31:28.230 に答える