BiDiTestView.java revision c2063a5b18bc2e54f000b411c82f43992a53854e
19f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio/* 29f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * Copyright (C) 2011 The Android Open Source Project 39f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * 49f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * Licensed under the Apache License, Version 2.0 (the "License"); 59f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * you may not use this file except in compliance with the License. 69f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * You may obtain a copy of the License at 79f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * 89f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * http://www.apache.org/licenses/LICENSE-2.0 99f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * 109f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * Unless required by applicable law or agreed to in writing, software 119f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * distributed under the License is distributed on an "AS IS" BASIS, 129f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * See the License for the specific language governing permissions and 149f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * limitations under the License. 159f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio */ 169f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 179f82b580d744ce4baf057b061994394dcf239eedFabrice Di Megliopackage com.android.bidi; 189f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 199f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglioimport android.content.Context; 209f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglioimport android.graphics.Canvas; 219f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglioimport android.graphics.Color; 229f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglioimport android.graphics.Paint; 239f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglioimport android.graphics.Rect; 24c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglioimport android.text.TextPaint; 259f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglioimport android.util.AttributeSet; 269f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglioimport android.util.Log; 279f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglioimport android.view.View; 289f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 299f82b580d744ce4baf057b061994394dcf239eedFabrice Di Megliopublic class BiDiTestView extends View { 309f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 319f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio private static final String TAG = "BiDiTestView"; 329f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 339f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio private static final int BORDER_PADDING = 4; 349f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio private static final int TEXT_PADDING = 16; 35eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio private static final int TEXT_SIZE = 16; 36eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio private static final int ORIGIN = 80; 379f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 389f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio private static final float DEFAULT_ITALIC_SKEW_X = -0.25f; 399f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 409f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio private Rect rect = new Rect(); 419f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 429f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio private String NORMAL_TEXT; 439f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio private String NORMAL_LONG_TEXT; 44eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio private String NORMAL_LONG_TEXT_2; 45eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio private String NORMAL_LONG_TEXT_3; 469f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio private String ITALIC_TEXT; 479f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio private String BOLD_TEXT; 489f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio private String BOLD_ITALIC_TEXT; 499f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio private String ARABIC_TEXT; 509f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio private String CHINESE_TEXT; 51689e515ed2b8064c15e54d8ab69d87de54c5e0d6Fabrice Di Meglio private String MIXED_TEXT_1; 52589e4e27ee071f028a4bc72b91a1fb053ab13404Fabrice Di Meglio private String HEBREW_TEXT; 53c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio private String RTL_TEXT; 549f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 55eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio private int currentTextSize; 56eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio 579f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio public BiDiTestView(Context context) { 589f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio super(context); 599f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio init(context); 609f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio } 619f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 629f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio public BiDiTestView(Context context, AttributeSet attrs) { 639f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio super(context, attrs); 649f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio init(context); 659f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio } 669f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 679f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio public BiDiTestView(Context context, AttributeSet attrs, int defStyle) { 689f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio super(context, attrs, defStyle); 699f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio init(context); 709f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio } 719f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 729f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio private void init(Context context) { 739f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio NORMAL_TEXT = context.getString(R.string.normal_text); 749f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio NORMAL_LONG_TEXT = context.getString(R.string.normal_long_text); 75eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio NORMAL_LONG_TEXT_2 = context.getString(R.string.normal_long_text_2); 76eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio NORMAL_LONG_TEXT_3 = context.getString(R.string.normal_long_text_3); 779f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio ITALIC_TEXT = context.getString(R.string.italic_text); 789f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio BOLD_TEXT = context.getString(R.string.bold_text); 799f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio BOLD_ITALIC_TEXT = context.getString(R.string.bold_italic_text); 809f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio ARABIC_TEXT = context.getString(R.string.arabic_text); 819f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio CHINESE_TEXT = context.getString(R.string.chinese_text); 82689e515ed2b8064c15e54d8ab69d87de54c5e0d6Fabrice Di Meglio MIXED_TEXT_1 = context.getString(R.string.mixed_text_1); 83589e4e27ee071f028a4bc72b91a1fb053ab13404Fabrice Di Meglio HEBREW_TEXT = context.getString(R.string.hebrew_text); 84c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio RTL_TEXT = context.getString(R.string.rtl); 859f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio } 869f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 87eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio public void setCurrentTextSize(int size) { 88eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio currentTextSize = size; 89eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio invalidate(); 90eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio } 91eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio 929f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio @Override 939f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio public void onDraw(Canvas canvas) { 94c2063a5b18bc2e54f000b411c82f43992a53854eFabrice Di Meglio drawInsideRect(canvas, new Paint(), Color.BLACK); 959f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 96589e4e27ee071f028a4bc72b91a1fb053ab13404Fabrice Di Meglio int deltaX = 0; 97589e4e27ee071f028a4bc72b91a1fb053ab13404Fabrice Di Meglio 98589e4e27ee071f028a4bc72b91a1fb053ab13404Fabrice Di Meglio deltaX = testString(canvas, NORMAL_TEXT, ORIGIN, ORIGIN, 99c2063a5b18bc2e54f000b411c82f43992a53854eFabrice Di Meglio false, false, Paint.DIRECTION_LTR, currentTextSize); 100eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio 101eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio deltaX += testString(canvas, ITALIC_TEXT, ORIGIN + deltaX, ORIGIN, 102c2063a5b18bc2e54f000b411c82f43992a53854eFabrice Di Meglio true, false, Paint.DIRECTION_LTR, currentTextSize); 103eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio 104eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio deltaX += testString(canvas, BOLD_TEXT, ORIGIN + deltaX, ORIGIN, 105c2063a5b18bc2e54f000b411c82f43992a53854eFabrice Di Meglio false, true, Paint.DIRECTION_LTR, currentTextSize); 106eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio 107eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio deltaX += testString(canvas, BOLD_ITALIC_TEXT, ORIGIN + deltaX, ORIGIN, 108c2063a5b18bc2e54f000b411c82f43992a53854eFabrice Di Meglio true, true, Paint.DIRECTION_LTR, currentTextSize); 1099f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 1109f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio // Test with a long string 111eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio deltaX = testString(canvas, NORMAL_LONG_TEXT, ORIGIN, ORIGIN + 2 * currentTextSize, 112c2063a5b18bc2e54f000b411c82f43992a53854eFabrice Di Meglio false, false, Paint.DIRECTION_LTR, currentTextSize); 113eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio 114eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio // Test with a long string 115eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio deltaX = testString(canvas, NORMAL_LONG_TEXT_2, ORIGIN, ORIGIN + 4 * currentTextSize, 116c2063a5b18bc2e54f000b411c82f43992a53854eFabrice Di Meglio false, false, Paint.DIRECTION_LTR, currentTextSize); 117eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio 118eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio // Test with a long string 119eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio deltaX = testString(canvas, NORMAL_LONG_TEXT_3, ORIGIN, ORIGIN + 6 * currentTextSize, 120c2063a5b18bc2e54f000b411c82f43992a53854eFabrice Di Meglio false, false, Paint.DIRECTION_LTR, currentTextSize); 1219f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 1229f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio // Test Arabic ligature 123eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio deltaX = testString(canvas, ARABIC_TEXT, ORIGIN, ORIGIN + 8 * currentTextSize, 124c2063a5b18bc2e54f000b411c82f43992a53854eFabrice Di Meglio false, false, Paint.DIRECTION_RTL, currentTextSize); 1259f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 1269f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio // Test Chinese 127eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio deltaX = testString(canvas, CHINESE_TEXT, ORIGIN, ORIGIN + 10 * currentTextSize, 128c2063a5b18bc2e54f000b411c82f43992a53854eFabrice Di Meglio false, false, Paint.DIRECTION_LTR, currentTextSize); 129689e515ed2b8064c15e54d8ab69d87de54c5e0d6Fabrice Di Meglio 130689e515ed2b8064c15e54d8ab69d87de54c5e0d6Fabrice Di Meglio // Test Mixed (English and Arabic) 131689e515ed2b8064c15e54d8ab69d87de54c5e0d6Fabrice Di Meglio deltaX = testString(canvas, MIXED_TEXT_1, ORIGIN, ORIGIN + 12 * currentTextSize, 132c2063a5b18bc2e54f000b411c82f43992a53854eFabrice Di Meglio false, false, Paint.DIRECTION_LTR, currentTextSize); 133589e4e27ee071f028a4bc72b91a1fb053ab13404Fabrice Di Meglio 134589e4e27ee071f028a4bc72b91a1fb053ab13404Fabrice Di Meglio // Test Hebrew 135c6f247ca31e5d4a9cc9d130cfb0abd5657176303Fabrice Di Meglio deltaX = testString(canvas, RTL_TEXT, ORIGIN, ORIGIN + 14 * currentTextSize, 136c2063a5b18bc2e54f000b411c82f43992a53854eFabrice Di Meglio false, false, Paint.DIRECTION_RTL, currentTextSize); 1379f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio } 1389f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 139c2063a5b18bc2e54f000b411c82f43992a53854eFabrice Di Meglio private int testString(Canvas canvas, String text, int x, int y, 140eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio boolean isItalic, boolean isBold, int dir, int textSize) { 141c2063a5b18bc2e54f000b411c82f43992a53854eFabrice Di Meglio 142c2063a5b18bc2e54f000b411c82f43992a53854eFabrice Di Meglio TextPaint paint = new TextPaint(); 143c2063a5b18bc2e54f000b411c82f43992a53854eFabrice Di Meglio paint.setAntiAlias(true); 1449f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 1459f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio // Set paint properties 1469f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio boolean oldFakeBold = paint.isFakeBoldText(); 1479f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio paint.setFakeBoldText(isBold); 1489f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 1499f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio float oldTextSkewX = paint.getTextSkewX(); 1509f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio if (isItalic) { 1519f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio paint.setTextSkewX(DEFAULT_ITALIC_SKEW_X); 1529f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio } 1539f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 154c2063a5b18bc2e54f000b411c82f43992a53854eFabrice Di Meglio paint.setTextSize(textSize); 155c2063a5b18bc2e54f000b411c82f43992a53854eFabrice Di Meglio paint.setColor(Color.WHITE); 156c2063a5b18bc2e54f000b411c82f43992a53854eFabrice Di Meglio canvas.drawText(text, x, y, paint); 1579f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 1589f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio int length = text.length(); 1599f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio float[] advances = new float[length]; 160689e515ed2b8064c15e54d8ab69d87de54c5e0d6Fabrice Di Meglio float textWidthHB = paint.getTextRunAdvances(text, 0, length, 0, length, dir, advances, 0); 161689e515ed2b8064c15e54d8ab69d87de54c5e0d6Fabrice Di Meglio setPaintDir(paint, dir); 1620a1413e4bf9dcda2a8abb2287e43f612a7fb2453Fabrice Di Meglio float textWidthICU = paint.getTextRunAdvances(text, 0, length, 0, length, dir, advances, 0, 1630a1413e4bf9dcda2a8abb2287e43f612a7fb2453Fabrice Di Meglio 1 /* use ICU */); 1649f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 165eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio logAdvances(text, textWidthHB, textWidthICU, advances); 166eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio drawMetricsAroundText(canvas, x, y, textWidthHB, textWidthICU, textSize, Color.RED, Color.GREEN); 1679f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 1689f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio // Restore old paint properties 1699f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio paint.setFakeBoldText(oldFakeBold); 1709f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio paint.setTextSkewX(oldTextSkewX); 1719f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 172eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio return (int) Math.ceil(textWidthHB) + TEXT_PADDING; 1739f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio } 1749f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 175689e515ed2b8064c15e54d8ab69d87de54c5e0d6Fabrice Di Meglio private void setPaintDir(Paint paint, int dir) { 176689e515ed2b8064c15e54d8ab69d87de54c5e0d6Fabrice Di Meglio Log.v(TAG, "Setting Paint dir=" + dir); 177689e515ed2b8064c15e54d8ab69d87de54c5e0d6Fabrice Di Meglio paint.setBidiFlags(dir); 178689e515ed2b8064c15e54d8ab69d87de54c5e0d6Fabrice Di Meglio } 179689e515ed2b8064c15e54d8ab69d87de54c5e0d6Fabrice Di Meglio 180c2063a5b18bc2e54f000b411c82f43992a53854eFabrice Di Meglio private void drawInsideRect(Canvas canvas, Paint paint, int color) { 1819f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio paint.setColor(color); 1829f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio int width = getWidth(); 1839f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio int height = getHeight(); 1849f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio rect.set(BORDER_PADDING, BORDER_PADDING, width - BORDER_PADDING, height - BORDER_PADDING); 1859f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio canvas.drawRect(rect, paint); 1869f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio } 1879f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 188eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio private void drawMetricsAroundText(Canvas canvas, int x, int y, float textWidthHB, 189eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio float textWidthICU, int textSize, int color, int colorICU) { 190c2063a5b18bc2e54f000b411c82f43992a53854eFabrice Di Meglio Paint paint = new Paint(); 1919f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio paint.setColor(color); 1929f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio canvas.drawLine(x, y - textSize, x, y + 8, paint); 193eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio canvas.drawLine(x, y + 8, x + textWidthHB, y + 8, paint); 194eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio canvas.drawLine(x + textWidthHB, y - textSize, x + textWidthHB, y + 8, paint); 195eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio paint.setColor(colorICU); 196eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio canvas.drawLine(x + textWidthICU, y - textSize, x + textWidthICU, y + 8, paint); 1979f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio } 1989f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 199eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio private void logAdvances(String text, float textWidth, float textWidthICU, float[] advances) { 200eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio Log.v(TAG, "Advances for text: " + text + " total= " + textWidth + " - totalICU= " + textWidthICU); 201eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio// int length = advances.length; 202eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio// for(int n=0; n<length; n++){ 203eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio// Log.v(TAG, "adv[" + n + "]=" + advances[n]); 204eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio// } 2059f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio } 2069f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio} 207