モールス信号のようなメッセージを可視光を介して外部デバイスに送信するために、正確なタイミングで画面をオン/オフする Android アプリを作成する必要があります。OS が私の「postAtTime」リクエストを妨害し、タイミングを台無しにしているように見えるため、これまでの私の実験は失敗しました。
Android画面を少なくとも50ミリ秒ごとにプラスまたはマイナス5%の精度でオン/オフ(黒/白)にフラッシュする方法について誰か提案がありますか?
ありがとうございました。
モールス信号のようなメッセージを可視光を介して外部デバイスに送信するために、正確なタイミングで画面をオン/オフする Android アプリを作成する必要があります。OS が私の「postAtTime」リクエストを妨害し、タイミングを台無しにしているように見えるため、これまでの私の実験は失敗しました。
Android画面を少なくとも50ミリ秒ごとにプラスまたはマイナス5%の精度でオン/オフ(黒/白)にフラッシュする方法について誰か提案がありますか?
ありがとうございました。
これを試すことができます:
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
}
}
<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>
を使用postAtTime()
すると、オーバーヘッドが大きくなりすぎます。アニメーションの使用を試すことも、古いループ/スリープベースのアプローチを試すこともできます。アニメーションについては、こちらのドキュメント(チュートリアルはこちら)を参照してください。ループ/スリープについては、デバイス上でアプリを解放します。つまり、10回のフラッシュを実行し、所要時間を確認します。次に、1回のフラッシュにかかる時間がわかります。それに応じて調整sleep()
して、必要なフラッシュレートを取得します。または、ハンドラーを試すこともできますがpostDelayed()
、この場合は効果がありません。
CountDownTimer クラスとその onTick メソッドを使用します。
CountDownTimer の onTick メソッド内にアニメーション ロジックのコードを記述してフラッシュする時間をミリ秒単位で設定できます。
CountdownTimer を拡張するクラスを作成し、ur アクティビティの onCreate で countdowntimerOBJECT.start() を呼び出すだけです。フルスクリーンの白いビューで黒い背景を使用し、ビューの可視性をオンまたはオフにアニメーション化できます。
ビューのアニメーションを試してみます。フルスクリーンの白いビューで黒い背景を使用し、ビューの可視性をオンまたはオフにアニメーション化できます。