0

Android Vibration のネイティブ拡張を作成しようとしています。私が見つけたすべてのオープンソース拡張機能は、 のみを利用し、 andは利用しvibrate(duration)ませんvibrate(pattern, repeat)vibrate.cancel()

パターンを渡し、関数をキャンセルできる必要があります。

vibration(duration)何の問題もなく元気に仕事ができています。私が使用する簡単なargs[1].getAsInt();方法があります。が、ありませ.getAsArray.getAsLong

FREArray というものを見つけましたが、使い方がよくわかりません。

それで、私の質問は、配列(パターンを含む)とint(繰り返しカウント用)を渡すことができるAS3関数を使用して、Android側で配列を受け取るにはどうすればよいですか? リピートのintを受け取るのに問題はありません。

これは私がこれまで取り組んできたものですが、エラーのために正しく使用していないようです。助言がありますか?

  public FREObject call(FREContext context, FREObject[] args) {


                VibrateExtensionContext vibrate(pattern, repeat)ExtensionContext) context;

                long[] pattern;
                int repeat = 0;

                try {
                    pattern = FREArray.newArray(args[0]); //this is where im stuck

                    //it would be ideal if there was something like this..

                    //pattern = args[0].getAsLong(); but this doesnt exist

                    repeat = args[1].getAsInt(); //this works fine
                } catch (IllegalStateException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (FRETypeMismatchException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (FREInvalidObjectException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (FREWrongThreadException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                vibExtContext.androidVibrator.vibrate(pattern, repeat);

                return null;
            }
4

1 に答える 1

2

double または int にのみアクセスできます。これらは、ActionScript 側の Number および int オブジェクトと同等です。AS から渡された配列を読み込むには、次のようにする必要があります。

try
{
    FREArray array = (FREArray)args[0];

    long[] pattern = new long[(int)array.getLength()];
    for (int i = 0; i < array.getLength(); i++)
    {
        FREObject object = array.getObjectAt(i);
        double number = object.getAsDouble(); 

        // use number - assuming you are okay truncating the decimal points
        pattern[i] = (long)number;
    }       
}
catch (Exception e)
{
}
于 2012-08-24T23:37:12.300 に答える