最近、私はアンドロイドウェアウォッチフェイスでアンビエントウェアを実装しようとしましたが、コーディングを実装した後、アンビエントモード(エミュレータ)に切り替えるとonAmbientModeChangedは呼び出されませんでした通常モードに2回呼び出されます。最初のトリガーはinAmbientModeがtrue、2番目のトリガーinAmbientModeがfalseです。onAmbientModeChangedはアンビエントウォッチフェイスでは呼び出されません
private class Engine extends CanvasWatchFaceService.Engine {
...
...
@Override
public void onAmbientModeChanged(boolean inAmbientMode) {
Log.e(TAG, "isInAmbientMode():" + inAmbientMode);
super.onAmbientModeChanged(inAmbientMode);
if (mLowBitAmbient) {
boolean antiAlias = !inAmbientMode;
setPaintAntiAlias(antiAlias);
}
invalidate();
updateTimer();
}
@override
public void onDraw(Canvas canvas, , Rect bounds){
...
for(int i=0;i<node.length;i++){
//drawing canvas
}
}
}
AndroidManifest.xml
<uses-permission android:name="com.google.android.permission.PROVIDE_BACKGROUND" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET"/>
周囲がオンのときにトリガーしないと何が問題になるのですか?それはバグか、これを引き起こすために何らかのパーミッションやクラスを追加する必要がありますか?どんな助けもありがとう。
EDIT:すると、周囲には通常モードに戻すまで、ウォッチフェイスは、ウォッチフェイスだけ何かをテストおよびデバッグした後、通常のウォッチフェイス
を描いた後、周囲ウォッチフェイスを描画します、再描画しません、私はforループがonAmbientModeChangedをトリガしなかった主な原因であることを知りました。forループをコメントアウトした後、onAmbientModeChangedも正常にトリガされますが、なぜそれが起こり、解決されたのかはわかりません。
ループ内のオンドラフトは悪いのですか? –