2

モールス信号のようなメッセージを可視光を介して外部デバイスに送信するために、正確なタイミングで画面をオン/オフする Android アプリを作成する必要があります。OS が私の「postAtTime」リクエストを妨害し、タイミングを台無しにしているように見えるため、これまでの私の実験は失敗しました。

Android画面を少なくとも50ミリ秒ごとにプラスまたはマイナス5%の精度でオン/オフ(黒/白)にフラッシュする方法について誰か提案がありますか?

ありがとうございました。

4

4 に答える 4

1

これを試すことができます:

SplashScreen.java

package some.pkg.name;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;

public class SplashScreen extends Activity {

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.splash_screen);

    Handler handler = new Handler();

    // run a thread after 5 seconds to start the home screen
    handler.postDelayed(new Runnable() {

        @Override
        public void run() {

           finish();

           // start the home screen
            Intent intent = new Intent(SplashScreen.this, TargetActivity.class);
            SplashScreen.this.startActivity(intent);

        }

    }, 5000); // time in milliseconds (1 second = 1000 milliseconds) until the run() method will be called

}

}

スプラッシュスクリーン.xml

       <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:background="@drawable/splash_image"/>

マニフェスト ファイル内

 <activity android:name=".SplashScreen"      
          android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">
        <intent-filter>
            <action android:name="android.intent.action.MAIN">
            <category android:name="android.intent.category.LAUNCHER">
        </category></action></intent-filter>
    </activity>
于 2012-11-20T17:46:06.610 に答える
0

を使用postAtTime()すると、オーバーヘッドが大きくなりすぎます。アニメーションの使用を試すことも、古いループ/スリープベースのアプローチを試すこともできます。アニメーションについては、こちらのドキュメント(チュートリアルはこちら)を参照してください。ループ/スリープについては、デバイス上でアプリを解放します。つまり、10回のフラッシュを実行し、所要時間を確認します。次に、1回のフラッシュにかかる時間がわかります。それに応じて調整sleep()して、必要なフラッシュレートを取得します。または、ハンドラーを試すこともできますがpostDelayed()、この場合は効果がありません。

于 2012-11-20T17:35:18.793 に答える
0

CountDownTimer クラスとその onTick メソッドを使用します。

CountDownTimer の onTick メソッド内にアニメーション ロジックのコードを記述してフラッシュする時間をミリ秒単位で設定できます。

CountdownTimer を拡張するクラスを作成し、ur アクティビティの onCreate で countdowntimerOBJECT.start() を呼び出すだけです。フルスクリーンの白いビューで黒い背景を使用し、ビューの可視性をオンまたはオフにアニメーション化できます。

于 2012-11-20T18:41:14.737 に答える
0

ビューのアニメーションを試してみます。フルスクリーンの白いビューで黒い背景を使用し、ビューの可視性をオンまたはオフにアニメーション化できます。

于 2012-11-20T17:34:06.390 に答える