Example usage for android.view GestureDetector GestureDetector

List of usage examples for android.view GestureDetector GestureDetector

Introduction

In this page you can find the example usage for android.view GestureDetector GestureDetector.

Prototype

@Deprecated
public GestureDetector(OnGestureListener listener) 

Source Link

Document

Creates a GestureDetector with the supplied listener.

Usage

From source file:edu.mit.viral.shen.DroidFish.java

private final void initUI() {
    leftHanded = leftHandedView();//from   w w w. j  a va2s  . c o  m
    setContentView(leftHanded ? R.layout.main_left_handed : R.layout.main);
    Util.overrideFonts(findViewById(android.R.id.content));

    // title lines need to be regenerated every time due to layout changes (rotations)
    secondTitleLine = findViewById(R.id.second_title_line);
    // whiteTitleText = (TextView)findViewById(R.id.white_clock);
    // whiteTitleText.setSelected(true);
    // blackTitleText = (TextView)findViewById(R.id.black_clock);
    // blackTitleText.setSelected(true);
    engineTitleText = (TextView) findViewById(R.id.title_text);
    whiteFigText = (TextView) findViewById(R.id.white_pieces);
    whiteFigText.setTypeface(figNotation);
    whiteFigText.setSelected(true);
    // whiteFigText.setTextColor(whiteTitleText.getTextColors());
    blackFigText = (TextView) findViewById(R.id.black_pieces);
    blackFigText.setTypeface(figNotation);
    blackFigText.setSelected(true);
    // blackFigText.setTextColor(blackTitleText.getTextColors());
    summaryTitleText = (TextView) findViewById(R.id.title_text_summary);

    status = (TextView) findViewById(R.id.status);
    //   server = (TextView)findViewById(R.id.server);
    moveListScroll = (ScrollView) findViewById(R.id.scrollView);
    moveList = (TextView) findViewById(R.id.moveList);
    defaultMoveListTypeFace = moveList.getTypeface();
    thinking = (TextView) findViewById(R.id.thinking);
    defaultThinkingListTypeFace = thinking.getTypeface();
    status.setFocusable(false);
    moveListScroll.setFocusable(false);
    moveList.setFocusable(false);
    moveList.setMovementMethod(LinkMovementMethod.getInstance());
    thinking.setFocusable(false);

    cb = (ChessBoardPlay) findViewById(R.id.chessboard);
    cb.setFocusable(true);
    cb.requestFocus();
    cb.setClickable(true);
    cb.setPgnOptions(pgnOptions);

    final GestureDetector gd = new GestureDetector(new GestureDetector.SimpleOnGestureListener() {
        private float scrollX = 0;
        private float scrollY = 0;

        @Override
        public boolean onDown(MotionEvent e) {
            if (!boardGestures) {
                handleClick(e);
                return true;
            }
            scrollX = 0;
            scrollY = 0;
            return false;
        }

        @Override
        public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
            if (!boardGestures)
                return false;
            cb.cancelLongPress();
            if (invertScrollDirection) {
                distanceX = -distanceX;
                distanceY = -distanceY;
            }
            if ((scrollSensitivity > 0) && (cb.sqSize > 0)) {
                scrollX += distanceX;
                scrollY += distanceY;
                float scrollUnit = cb.sqSize * scrollSensitivity;
                if (Math.abs(scrollX) >= Math.abs(scrollY)) {
                    // Undo/redo
                    int nRedo = 0, nUndo = 0;
                    while (scrollX > scrollUnit) {
                        nRedo++;
                        scrollX -= scrollUnit;
                    }
                    while (scrollX < -scrollUnit) {
                        nUndo++;
                        scrollX += scrollUnit;
                    }
                    if (nUndo + nRedo > 0)
                        scrollY = 0;
                    if (nRedo + nUndo > 1) {
                        boolean analysis = gameMode.analysisMode();
                        boolean human = gameMode.playerWhite() || gameMode.playerBlack();
                        if (analysis || !human)
                            ctrl.setGameMode(new GameMode(GameMode.TWO_PLAYERS));
                    }
                    for (int i = 0; i < nRedo; i++)
                        ctrl.redoMove();
                    for (int i = 0; i < nUndo; i++)
                        ctrl.undoMove();
                    ctrl.setGameMode(gameMode);
                } else {
                    // Next/previous variation
                    int varDelta = 0;
                    while (scrollY > scrollUnit) {
                        varDelta++;
                        scrollY -= scrollUnit;
                    }
                    while (scrollY < -scrollUnit) {
                        varDelta--;
                        scrollY += scrollUnit;
                    }
                    if (varDelta != 0)
                        scrollX = 0;
                    ctrl.changeVariation(varDelta);
                }
            }
            return true;
        }

        @Override
        public boolean onSingleTapUp(MotionEvent e) {
            if (!boardGestures)
                return false;
            cb.cancelLongPress();
            handleClick(e);
            return true;
        }

        @Override
        public boolean onDoubleTapEvent(MotionEvent e) {
            if (!boardGestures)
                return false;
            if (e.getAction() == MotionEvent.ACTION_UP)
                handleClick(e);
            return true;
        }

        private final void handleClick(MotionEvent e) {
            if (ctrl.humansTurn()) {
                int sq = cb.eventToSquare(e);
                Move m = cb.mousePressed(sq);
                if (m != null) {
                    ctrl.makeHumanMove(m);
                    String longfen = TextIO.toFEN(cb.pos);
                    String sentout = utils.getSendMessageJSON(longfen);
                    sendJSON(sentout);
                    // String fen1=longfen.replaceAll("D","1");]
                    // commented out 04/12/15
                    // sendDataone(longfen, 1); 
                }

                setEgtbHints(cb.getSelectedSquare());
            }
        }

        @Override
        public void onLongPress(MotionEvent e) {
            if (!boardGestures)
                return;
            ((Vibrator) getSystemService(Context.VIBRATOR_SERVICE)).vibrate(20);
            removeDialog(BOARD_MENU_DIALOG);
            showDialog(BOARD_MENU_DIALOG);
        }
    });
    cb.setOnTouchListener(new OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            return gd.onTouchEvent(event);
        }
    });
    cb.setOnTrackballListener(new ChessBoard.OnTrackballListener() {
        public void onTrackballEvent(MotionEvent event) {
            if (ctrl.humansTurn()) {
                Move m = cb.handleTrackballEvent(event);
                if (m != null)
                    ctrl.makeHumanMove(m);
                setEgtbHints(cb.getSelectedSquare());

            }
        }
    });

    moveList.setOnLongClickListener(new OnLongClickListener() {
        public boolean onLongClick(View v) {
            removeDialog(MOVELIST_MENU_DIALOG);
            showDialog(MOVELIST_MENU_DIALOG);
            return true;
        }
    });
    thinking.setOnLongClickListener(new OnLongClickListener() {
        public boolean onLongClick(View v) {
            if (mShowThinking || gameMode.analysisMode()) {
                if (!pvMoves.isEmpty()) {
                    removeDialog(THINKING_MENU_DIALOG);
                    showDialog(THINKING_MENU_DIALOG);
                }
            }
            return true;
        }
    });

    custom1Button = (ImageButton) findViewById(R.id.custom1Button);
    custom1ButtonActions.setImageButton(custom1Button, this);
    custom2Button = (ImageButton) findViewById(R.id.custom2Button);
    custom2ButtonActions.setImageButton(custom2Button, this);
    custom3Button = (ImageButton) findViewById(R.id.custom3Button);
    custom3ButtonActions.setImageButton(custom3Button, this);

    /*        modeButton = (ImageButton)findViewById(R.id.modeButton);
            modeButton.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        showDialog(GAME_MODE_DIALOG);
    }
            });
            */
    undoButton = (ImageButton) findViewById(R.id.undoButton);
    undoButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            ctrl.undoMove();
            sendDataone(TextIO.toFEN(cb.pos), 1);

        }
    });
    undoButton.setOnLongClickListener(new OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            removeDialog(GO_BACK_MENU_DIALOG);
            showDialog(GO_BACK_MENU_DIALOG);
            return true;
        }
    });

    commentButton = (ImageButton) findViewById(R.id.commentbutton);
    commentButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            AlertDialog.Builder builder = new AlertDialog.Builder(DroidFish.this);
            builder.setTitle(R.string.edit_comments);
            View content = View.inflate(DroidFish.this, R.layout.edit_comments, null);
            builder.setView(content);

            DroidChessController.CommentInfo commInfo = ctrl.getComments();

            final TextView preComment, moveView, nag, postComment;
            preComment = (TextView) content.findViewById(R.id.ed_comments_pre);
            moveView = (TextView) content.findViewById(R.id.ed_comments_move);
            nag = (TextView) content.findViewById(R.id.ed_comments_nag);
            postComment = (TextView) content.findViewById(R.id.ed_comments_post);

            preComment.setText(commInfo.preComment);
            postComment.setText(commInfo.postComment);
            moveView.setText(commInfo.move);
            String nagStr = Node.nagStr(commInfo.nag).trim();
            if ((nagStr.length() == 0) && (commInfo.nag > 0))
                nagStr = String.format(Locale.US, "%d", commInfo.nag);
            nag.setText(nagStr);

            builder.setNegativeButton(R.string.cancel, null);
            builder.setPositiveButton(android.R.string.ok, new Dialog.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    String pre = preComment.getText().toString().trim();
                    String post = postComment.getText().toString().trim();
                    sendComment(post);
                    int nagVal = Node.strToNag(nag.getText().toString());

                    DroidChessController.CommentInfo commInfo = new DroidChessController.CommentInfo();
                    commInfo.preComment = pre;
                    commInfo.postComment = post;
                    commInfo.nag = nagVal;
                    ctrl.setComments(commInfo);

                }
            });

            builder.show();
        }
    });
    commentButton.setOnLongClickListener(new OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            removeDialog(GO_FORWARD_MENU_DIALOG);
            showDialog(GO_FORWARD_MENU_DIALOG);
            return true;
        }
    });

    redoButton = (ImageButton) findViewById(R.id.redoButton);
    redoButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            ctrl.redoMove();
            //startNewGame(2);
        }
    });
    redoButton.setOnLongClickListener(new OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            removeDialog(GO_FORWARD_MENU_DIALOG);
            showDialog(GO_FORWARD_MENU_DIALOG);
            return true;
        }
    });
}

From source file:com.ichi2.anki2.DeckPicker.java

/** Called when the activity is first created. */
@Override/* ww  w  .java2s.c  o  m*/
protected void onCreate(Bundle savedInstanceState) throws SQLException {
    Log.i(AnkiDroidApp.TAG, "DeckPicker - onCreate");
    Intent intent = getIntent();
    if (!isTaskRoot()) {
        Log.i(AnkiDroidApp.TAG,
                "DeckPicker - onCreate: Detected multiple instance of this activity, closing it and return to root activity");
        Intent reloadIntent = new Intent(DeckPicker.this, DeckPicker.class);
        reloadIntent.setAction(Intent.ACTION_MAIN);
        if (intent != null && intent.getExtras() != null) {
            reloadIntent.putExtras(intent.getExtras());
        }
        if (intent != null && intent.getData() != null) {
            reloadIntent.setData(intent.getData());
        }
        reloadIntent.addCategory(Intent.CATEGORY_LAUNCHER);
        reloadIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        finish();
        startActivityIfNeeded(reloadIntent, 0);
    }
    if (intent.getData() != null) {
        mImportPath = getIntent().getData().getEncodedPath();
    }

    // need to start this here in order to avoid showing deckpicker before splashscreen
    if (AnkiDroidApp.colIsOpen()) {
        setTitle(getResources().getString(R.string.app_name));
    } else {
        setTitle("");
        mOpenCollectionHandler.onPreExecute();
    }

    Themes.applyTheme(this);
    super.onCreate(savedInstanceState);

    // mStartedByBigWidget = intent.getIntExtra(EXTRA_START, EXTRA_START_NOTHING);

    SharedPreferences preferences = restorePreferences();

    // activate broadcast messages if first start of a day
    if (mLastTimeOpened < UIUtils.getDayStart()) {
        preferences.edit().putBoolean("showBroadcastMessageToday", true).commit();
    }
    preferences.edit().putLong("lastTimeOpened", System.currentTimeMillis()).commit();

    // if (intent != null && intent.hasExtra(EXTRA_DECK_ID)) {
    // openStudyOptions(intent.getLongExtra(EXTRA_DECK_ID, 1));
    // }

    BroadcastMessages.checkForNewMessages(this);

    View mainView = getLayoutInflater().inflate(R.layout.deck_picker, null);
    setContentView(mainView);

    // check, if tablet layout
    View studyoptionsFrame = findViewById(R.id.studyoptions_fragment);
    mFragmented = studyoptionsFrame != null && studyoptionsFrame.getVisibility() == View.VISIBLE;

    Themes.setContentStyle(mFragmented ? mainView : mainView.findViewById(R.id.deckpicker_view),
            Themes.CALLER_DECKPICKER);

    registerExternalStorageListener();

    if (!mFragmented) {
        mAddButton = (ImageButton) findViewById(R.id.deckpicker_add);
        mAddButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                addNote();
            }
        });

        mCardsButton = (ImageButton) findViewById(R.id.deckpicker_card_browser);
        mCardsButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                openCardBrowser();
            }
        });

        mStatsButton = (ImageButton) findViewById(R.id.statistics_all_button);
        mStatsButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                showDialog(DIALOG_SELECT_STATISTICS_TYPE);
            }
        });

        mSyncButton = (ImageButton) findViewById(R.id.sync_all_button);
        mSyncButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                sync();
            }
        });
    }

    mInvalidateMenu = false;
    mDeckList = new ArrayList<HashMap<String, String>>();
    mDeckListView = (ListView) findViewById(R.id.files);
    mDeckListAdapter = new SimpleAdapter(this, mDeckList, R.layout.deck_item,
            new String[] { "name", "new", "lrn", "rev", // "complMat", "complAll",
                    "sep", "dyn" },
            new int[] { R.id.DeckPickerName, R.id.deckpicker_new, R.id.deckpicker_lrn, R.id.deckpicker_rev, // R.id.deckpicker_bar_mat, R.id.deckpicker_bar_all,
                    R.id.deckpicker_deck, R.id.DeckPickerName });
    mDeckListAdapter.setViewBinder(new SimpleAdapter.ViewBinder() {
        @Override
        public boolean setViewValue(View view, Object data, String text) {
            if (view.getId() == R.id.deckpicker_deck) {
                if (text.equals("top")) {
                    view.setBackgroundResource(R.drawable.white_deckpicker_top);
                    return true;
                } else if (text.equals("bot")) {
                    view.setBackgroundResource(R.drawable.white_deckpicker_bottom);
                    return true;
                } else if (text.equals("ful")) {
                    view.setBackgroundResource(R.drawable.white_deckpicker_full);
                    return true;
                } else if (text.equals("cen")) {
                    view.setBackgroundResource(R.drawable.white_deckpicker_center);
                    return true;
                }
            } else if (view.getId() == R.id.DeckPickerName) {
                if (text.equals("d0")) {
                    ((TextView) view).setTextColor(getResources().getColor(R.color.non_dyn_deck));
                    return true;
                } else if (text.equals("d1")) {
                    ((TextView) view).setTextColor(getResources().getColor(R.color.dyn_deck));
                    return true;
                }
            }
            // } else if (view.getId() == R.id.deckpicker_bar_mat || view.getId() == R.id.deckpicker_bar_all) {
            // if (text.length() > 0 && !text.equals("-1.0")) {
            // View parent = (View)view.getParent().getParent();
            // if (text.equals("-2")) {
            // parent.setVisibility(View.GONE);
            // } else {
            // Utils.updateProgressBars(view, (int) UIUtils.getDensityAdjustedValue(DeckPicker.this, 3.4f),
            // (int) (Double.parseDouble(text) * ((View)view.getParent().getParent().getParent()).getHeight()));
            // if (parent.getVisibility() == View.INVISIBLE) {
            // parent.setVisibility(View.VISIBLE);
            // parent.setAnimation(ViewAnimation.fade(ViewAnimation.FADE_IN, 500, 0));
            // }
            // }
            // }
            // return true;
            // } else if (view.getVisibility() == View.INVISIBLE) {
            // if (!text.equals("-1")) {
            // view.setVisibility(View.VISIBLE);
            // view.setAnimation(ViewAnimation.fade(ViewAnimation.FADE_IN, 500, 0));
            // return false;
            // }
            // } else if (text.equals("-1")){
            // view.setVisibility(View.INVISIBLE);
            // return false;
            return false;
        }
    });
    mDeckListView.setOnItemClickListener(mDeckSelHandler);
    mDeckListView.setAdapter(mDeckListAdapter);

    if (mFragmented) {
        mDeckListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
    }

    registerForContextMenu(mDeckListView);

    showStartupScreensAndDialogs(preferences, 0);

    if (mSwipeEnabled) {
        gestureDetector = new GestureDetector(new MyGestureDetector());
        mDeckListView.setOnTouchListener(new View.OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {
                if (gestureDetector.onTouchEvent(event)) {
                    return true;
                }
                return false;
            }
        });
    }
}

From source file:com.nit.vicky.DeckPicker.java

/** Called when the activity is first created. */
@Override//from   ww  w  . j  a v  a  2s.  co m
protected void onCreate(Bundle savedInstanceState) throws SQLException {
    // Log.i(AnkiDroidApp.TAG, "DeckPicker - onCreate");
    Intent intent = getIntent();
    if (!isTaskRoot()) {
        // Log.i(AnkiDroidApp.TAG, "DeckPicker - onCreate: Detected multiple instance of this activity, closing it and return to root activity");
        Intent reloadIntent = new Intent(DeckPicker.this, DeckPicker.class);
        reloadIntent.setAction(Intent.ACTION_MAIN);
        if (intent != null && intent.getExtras() != null) {
            reloadIntent.putExtras(intent.getExtras());
        }
        if (intent != null && intent.getData() != null) {
            reloadIntent.setData(intent.getData());
        }
        reloadIntent.addCategory(Intent.CATEGORY_LAUNCHER);
        reloadIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        finish();
        startActivityIfNeeded(reloadIntent, 0);
    }
    if (intent.getData() != null) {
        mImportPath = getIntent().getData().getEncodedPath();
    }

    // need to start this here in order to avoid showing deckpicker before splashscreen
    if (AnkiDroidApp.colIsOpen()) {
        setTitle(getResources().getString(R.string.app_name));
    } else {
        setTitle("");
        mOpenCollectionHandler.onPreExecute();
    }

    Themes.applyTheme(this);
    super.onCreate(savedInstanceState);

    // mStartedByBigWidget = intent.getIntExtra(EXTRA_START, EXTRA_START_NOTHING);

    SharedPreferences preferences = restorePreferences();

    // activate broadcast messages if first start of a day
    if (mLastTimeOpened < UIUtils.getDayStart()) {
        preferences.edit().putBoolean("showBroadcastMessageToday", true).commit();
    }
    preferences.edit().putLong("lastTimeOpened", System.currentTimeMillis()).commit();

    // if (intent != null && intent.hasExtra(EXTRA_DECK_ID)) {
    // openStudyOptions(intent.getLongExtra(EXTRA_DECK_ID, 1));
    // }

    //BroadcastMessages.checkForNewMessages(this);

    View mainView = getLayoutInflater().inflate(R.layout.deck_picker, null);
    setContentView(mainView);

    // check, if tablet layout
    View studyoptionsFrame = findViewById(R.id.studyoptions_fragment);
    mFragmented = studyoptionsFrame != null && studyoptionsFrame.getVisibility() == View.VISIBLE;

    Themes.setContentStyle(mFragmented ? mainView : mainView.findViewById(R.id.deckpicker_view),
            Themes.CALLER_DECKPICKER);

    registerExternalStorageListener();

    if (!mFragmented) {
        mAddButton = (ImageButton) findViewById(R.id.deckpicker_add);
        mAddButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                addNote();
            }
        });

        mCardsButton = (ImageButton) findViewById(R.id.deckpicker_card_browser);
        mCardsButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                openCardBrowser();
            }
        });

        mStatsButton = (ImageButton) findViewById(R.id.statistics_all_button);
        mStatsButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                showDialog(DIALOG_SELECT_STATISTICS_TYPE);
            }
        });

        mSyncButton = (ImageButton) findViewById(R.id.sync_all_button);
        mSyncButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                sync();
            }
        });
    }

    mInvalidateMenu = false;
    mDeckList = new ArrayList<HashMap<String, String>>();
    mDeckListView = (ListView) findViewById(R.id.files);
    mDeckListAdapter = new SimpleAdapter(this, mDeckList, R.layout.deck_item,
            new String[] { "name", "new", "lrn", "rev", // "complMat", "complAll",
                    "sep", "dyn" },
            new int[] { R.id.DeckPickerName, R.id.deckpicker_new, R.id.deckpicker_lrn, R.id.deckpicker_rev, // R.id.deckpicker_bar_mat, R.id.deckpicker_bar_all,
                    R.id.deckpicker_deck, R.id.DeckPickerName });
    mDeckListAdapter.setViewBinder(new SimpleAdapter.ViewBinder() {
        @Override
        public boolean setViewValue(View view, Object data, String text) {
            if (view.getId() == R.id.deckpicker_deck) {
                if (text.equals("top")) {
                    view.setBackgroundResource(R.drawable.white_deckpicker_top);
                    return true;
                } else if (text.equals("bot")) {
                    view.setBackgroundResource(R.drawable.white_deckpicker_bottom);
                    return true;
                } else if (text.equals("ful")) {
                    view.setBackgroundResource(R.drawable.white_deckpicker_full);
                    return true;
                } else if (text.equals("cen")) {
                    view.setBackgroundResource(R.drawable.white_deckpicker_center);
                    return true;
                }
            } else if (view.getId() == R.id.DeckPickerName) {
                if (text.equals("d0")) {
                    ((TextView) view).setTextColor(getResources().getColor(R.color.non_dyn_deck));
                    return true;
                } else if (text.equals("d1")) {
                    ((TextView) view).setTextColor(getResources().getColor(R.color.dyn_deck));
                    return true;
                }
            }
            // } else if (view.getId() == R.id.deckpicker_bar_mat || view.getId() == R.id.deckpicker_bar_all) {
            // if (text.length() > 0 && !text.equals("-1.0")) {
            // View parent = (View)view.getParent().getParent();
            // if (text.equals("-2")) {
            // parent.setVisibility(View.GONE);
            // } else {
            // Utils.updateProgressBars(view, (int) UIUtils.getDensityAdjustedValue(DeckPicker.this, 3.4f),
            // (int) (Double.parseDouble(text) * ((View)view.getParent().getParent().getParent()).getHeight()));
            // if (parent.getVisibility() == View.INVISIBLE) {
            // parent.setVisibility(View.VISIBLE);
            // parent.setAnimation(ViewAnimation.fade(ViewAnimation.FADE_IN, 500, 0));
            // }
            // }
            // }
            // return true;
            // } else if (view.getVisibility() == View.INVISIBLE) {
            // if (!text.equals("-1")) {
            // view.setVisibility(View.VISIBLE);
            // view.setAnimation(ViewAnimation.fade(ViewAnimation.FADE_IN, 500, 0));
            // return false;
            // }
            // } else if (text.equals("-1")){
            // view.setVisibility(View.INVISIBLE);
            // return false;
            return false;
        }
    });
    mDeckListView.setOnItemClickListener(mDeckSelHandler);
    mDeckListView.setAdapter(mDeckListAdapter);

    if (mFragmented) {
        mDeckListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
    }

    registerForContextMenu(mDeckListView);

    showStartupScreensAndDialogs(preferences, 0);

    if (mSwipeEnabled) {
        gestureDetector = new GestureDetector(new MyGestureDetector());
        mDeckListView.setOnTouchListener(new View.OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {
                if (gestureDetector.onTouchEvent(event)) {
                    return true;
                }
                return false;
            }
        });
    }
}

From source file:com.ichi2.anki.AbstractFlashcardViewer.java

protected void initLayout() {
    mMainLayout = findViewById(R.id.main_layout);
    mCardContainer = (FrameLayout) findViewById(R.id.flashcard_frame);

    mTopBarLayout = (RelativeLayout) findViewById(R.id.top_bar);
    mCardFrame = (FrameLayout) findViewById(R.id.flashcard);
    mTouchLayer = (FrameLayout) findViewById(R.id.touch_layer);
    mTouchLayer.setOnTouchListener(mGestureListener);
    if (!mDisableClipboard && mLongClickWorkaround) {
        mTouchLayer.setOnLongClickListener(mLongClickListener);
    }//  w  w w . j  av  a2 s.com
    if (!mDisableClipboard) {
        mClipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
    }
    mCardFrame.removeAllViews();

    // Initialize swipe
    gestureDetector = new GestureDetector(new MyGestureDetector());

    mEase1 = (TextView) findViewById(R.id.ease1);
    mEase1.setTypeface(TypefaceHelper.get(this, "Roboto-Medium"));
    mEase1Layout = (LinearLayout) findViewById(R.id.flashcard_layout_ease1);
    mEase1Layout.setOnClickListener(mSelectEaseHandler);

    mEase2 = (TextView) findViewById(R.id.ease2);
    mEase2.setTypeface(TypefaceHelper.get(this, "Roboto-Medium"));
    mEase2Layout = (LinearLayout) findViewById(R.id.flashcard_layout_ease2);
    mEase2Layout.setOnClickListener(mSelectEaseHandler);

    mEase3 = (TextView) findViewById(R.id.ease3);
    mEase3.setTypeface(TypefaceHelper.get(this, "Roboto-Medium"));
    mEase3Layout = (LinearLayout) findViewById(R.id.flashcard_layout_ease3);
    mEase3Layout.setOnClickListener(mSelectEaseHandler);

    mEase4 = (TextView) findViewById(R.id.ease4);
    mEase4.setTypeface(TypefaceHelper.get(this, "Roboto-Medium"));
    mEase4Layout = (LinearLayout) findViewById(R.id.flashcard_layout_ease4);
    mEase4Layout.setOnClickListener(mSelectEaseHandler);

    mNext1 = (TextView) findViewById(R.id.nextTime1);
    mNext2 = (TextView) findViewById(R.id.nextTime2);
    mNext3 = (TextView) findViewById(R.id.nextTime3);
    mNext4 = (TextView) findViewById(R.id.nextTime4);
    mNext1.setTypeface(TypefaceHelper.get(this, "Roboto-Regular"));
    mNext2.setTypeface(TypefaceHelper.get(this, "Roboto-Regular"));
    mNext3.setTypeface(TypefaceHelper.get(this, "Roboto-Regular"));
    mNext4.setTypeface(TypefaceHelper.get(this, "Roboto-Regular"));

    if (!mShowNextReviewTime) {
        mNext1.setVisibility(View.GONE);
        mNext2.setVisibility(View.GONE);
        mNext3.setVisibility(View.GONE);
        mNext4.setVisibility(View.GONE);
    }

    mFlipCard = (Button) findViewById(R.id.flip_card);
    mFlipCard.setTypeface(TypefaceHelper.get(this, "Roboto-Medium"));
    mFlipCardLayout = (LinearLayout) findViewById(R.id.flashcard_layout_flip);
    mFlipCardLayout.setOnClickListener(mFlipCardListener);

    if (!mButtonHeightSet && mRelativeButtonSize != 100) {
        ViewGroup.LayoutParams params = mFlipCardLayout.getLayoutParams();
        params.height = params.height * mRelativeButtonSize / 100;
        params = mEase1Layout.getLayoutParams();
        params.height = params.height * mRelativeButtonSize / 100;
        params = mEase2Layout.getLayoutParams();
        params.height = params.height * mRelativeButtonSize / 100;
        params = mEase3Layout.getLayoutParams();
        params.height = params.height * mRelativeButtonSize / 100;
        params = mEase4Layout.getLayoutParams();
        params.height = params.height * mRelativeButtonSize / 100;
        mButtonHeightSet = true;
    }

    mTextBarNew = (TextView) findViewById(R.id.new_number);
    mTextBarLearn = (TextView) findViewById(R.id.learn_number);
    mTextBarReview = (TextView) findViewById(R.id.review_number);

    if (!mShowRemainingCardCount) {
        mTextBarNew.setVisibility(View.GONE);
        mTextBarLearn.setVisibility(View.GONE);
        mTextBarReview.setVisibility(View.GONE);
    }

    mCardTimer = (Chronometer) findViewById(R.id.card_time);

    mChosenAnswer = (TextView) findViewById(R.id.choosen_answer);

    mAnswerField = (EditText) findViewById(R.id.answer_field);

    mLookUpIcon = findViewById(R.id.lookup_button);
    mLookUpIcon.setVisibility(View.GONE);
    mLookUpIcon.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            Timber.i("AbstractFlashcardViewer:: Lookup button pressed");
            if (clipboardHasText()) {
                lookUp();
            }
        }

    });
    initControls();
}

From source file:com.hichinaschool.flashcards.anki.DeckPicker.java

/** Called when the activity is first created. */
@Override/*from  w ww . j  ava 2s  . c  o m*/
protected void onCreate(Bundle savedInstanceState) throws SQLException {
    // Log.i(AnkiDroidApp.TAG, "DeckPicker - onCreate");
    Intent intent = getIntent();
    if (!isTaskRoot()) {
        // Log.i(AnkiDroidApp.TAG, "DeckPicker - onCreate: Detected multiple instance of this activity, closing it and return to root activity");
        Intent reloadIntent = new Intent(DeckPicker.this, DeckPicker.class);
        reloadIntent.setAction(Intent.ACTION_MAIN);
        if (intent != null && intent.getExtras() != null) {
            reloadIntent.putExtras(intent.getExtras());
        }
        if (intent != null && intent.getData() != null) {
            reloadIntent.setData(intent.getData());
        }
        reloadIntent.addCategory(Intent.CATEGORY_LAUNCHER);
        reloadIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        finish();
        startActivityIfNeeded(reloadIntent, 0);
    }
    if (intent.getData() != null) {
        mImportPath = getIntent().getData().getEncodedPath();
    }

    // need to start this here in order to avoid showing deckpicker before splashscreen
    if (AnkiDroidApp.colIsOpen()) {
        setTitle(getResources().getString(R.string.app_name));
    } else {
        setTitle("");
        mOpenCollectionHandler.onPreExecute();
    }

    Themes.applyTheme(this);
    super.onCreate(savedInstanceState);

    // mStartedByBigWidget = intent.getIntExtra(EXTRA_START, EXTRA_START_NOTHING);

    SharedPreferences preferences = restorePreferences();

    // activate broadcast messages if first start of a day
    if (mLastTimeOpened < UIUtils.getDayStart()) {
        preferences.edit().putBoolean("showBroadcastMessageToday", true).commit();
    }
    preferences.edit().putLong("lastTimeOpened", System.currentTimeMillis()).commit();

    // if (intent != null && intent.hasExtra(EXTRA_DECK_ID)) {
    // openStudyOptions(intent.getLongExtra(EXTRA_DECK_ID, 1));
    // }

    //   BroadcastMessages.checkForNewMessages(this);

    View mainView = getLayoutInflater().inflate(R.layout.deck_picker, null);
    setContentView(mainView);

    // check, if tablet layout
    View studyoptionsFrame = findViewById(R.id.studyoptions_fragment);
    mFragmented = studyoptionsFrame != null && studyoptionsFrame.getVisibility() == View.VISIBLE;

    Themes.setContentStyle(mFragmented ? mainView : mainView.findViewById(R.id.deckpicker_view),
            Themes.CALLER_DECKPICKER);

    registerExternalStorageListener();

    if (!mFragmented) {
        //            mAddButton = (ImageButton) findViewById(R.id.deckpicker_add);
        //            mAddButton.setOnClickListener(new OnClickListener() {
        //                @Override
        //                public void onClick(View v) {
        //                    addNote();
        //                }
        //            });
        //
        //            mCardsButton = (ImageButton) findViewById(R.id.deckpicker_card_browser);
        //            mCardsButton.setOnClickListener(new OnClickListener() {
        //                @Override
        //                public void onClick(View v) {
        //                    openCardBrowser();
        //                }
        //            });
        //
        //            mStatsButton = (ImageButton) findViewById(R.id.statistics_all_button);
        //            mStatsButton.setOnClickListener(new OnClickListener() {
        //                @Override
        //                public void onClick(View v) {
        //                    showDialog(DIALOG_SELECT_STATISTICS_TYPE);
        //                }
        //            });
        //
        //            mSyncButton = (ImageButton) findViewById(R.id.sync_all_button);
        //            mSyncButton.setOnClickListener(new OnClickListener() {
        //                @Override
        //                public void onClick(View v) {
        //                    sync();
        //                }
        //            });
    }

    mInvalidateMenu = false;
    mDeckList = new ArrayList<HashMap<String, String>>();
    mDeckListView = (ListView) findViewById(R.id.files);
    //   mDeckListAdapter = new SimpleAdapter(this, mDeckList, R.layout.deck_item, new String[] { "name", "new", "lrn",
    //      "rev", // "complMat", "complAll",
    //      "sep", "dyn" }, new int[] { R.id.DeckPickerName, R.id.deckpicker_new, R.id.deckpicker_lrn,
    //      R.id.deckpicker_rev, // R.id.deckpicker_bar_mat, R.id.deckpicker_bar_all,
    //      R.id.deckpicker_deck, R.id.DeckPickerName });

    mDeckListAdapter = new SimpleAdapter(this, mDeckList, R.layout.deck_item,
            new String[] { "name", "new", "lrn", "rev", "sep", "dyn", "url" },
            new int[] { R.id.DeckPickerName, R.id.deckpicker_new, R.id.deckpicker_lrn, R.id.deckpicker_rev,
                    R.id.deckpicker_deck, R.id.DeckPickerName, R.id.deckpicker_url });

    mDeckListAdapter.setViewBinder(new SimpleAdapter.ViewBinder() {
        @Override
        public boolean setViewValue(final View view, final Object data, String text) {
            if (view.getId() == R.id.deckpicker_url) {
                // If "url" field has text, it means the deck must be downloaded
                // so we put the downloadButton visible and add its listener
                if (!text.equals("")) {

                    final View parentView = (View) view.getParent();
                    Button downloadButton = (Button) parentView.findViewById(R.id.deckpicker_button);

                    downloadButton.setVisibility(View.VISIBLE);
                    parentView.findViewById(R.id.deckpicker_new).setVisibility(View.GONE);
                    parentView.findViewById(R.id.deckpicker_rev).setVisibility(View.GONE);
                    parentView.findViewById(R.id.deckpicker_lrn).setVisibility(View.GONE);

                    downloadButton.setOnClickListener(new OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            //   ListView lv = (ListView) parentView.getParent().getParent();
                            //                        int i;
                            //                        for (i = 0; i < mDeckList.size(); i++) {
                            //                           if (mDeckListView.getItemAtPosition(i).equals(view)){
                            //                              mDeckLastItemSelected = i;
                            //                           }
                            //                        }

                            // Gets url from the selected deck and download it
                            TextView txt = (TextView) ((View) view.getParent())
                                    .findViewById(R.id.deckpicker_url);
                            String url = txt.getText().toString();
                            Connection.downloadSharedDeck(mDownloadDeckListener,
                                    new Connection.Payload(new Object[] { url }));
                        }
                    });
                } else {
                    Button downloadButton = (Button) ((View) view.getParent())
                            .findViewById(R.id.deckpicker_button);
                    downloadButton.setVisibility(View.GONE);
                    ((View) view.getParent()).findViewById(R.id.deckpicker_new).setVisibility(View.VISIBLE);
                    ((View) view.getParent()).findViewById(R.id.deckpicker_rev).setVisibility(View.VISIBLE);
                    ((View) view.getParent()).findViewById(R.id.deckpicker_lrn).setVisibility(View.VISIBLE);
                }
            }
            if (view.getId() == R.id.deckpicker_deck) {
                if (text.equals("top")) {
                    view.setBackgroundResource(R.drawable.white_deckpicker_top);
                    return true;
                } else if (text.equals("bot")) {
                    view.setBackgroundResource(R.drawable.white_deckpicker_bottom);
                    return true;
                } else if (text.equals("ful")) {
                    view.setBackgroundResource(R.drawable.white_deckpicker_full);
                    return true;
                } else if (text.equals("cen")) {
                    view.setBackgroundResource(R.drawable.white_deckpicker_center);
                    return true;
                }
            } else if (view.getId() == R.id.DeckPickerName) {
                if (text.equals("d0")) {
                    ((TextView) view).setTextColor(getResources().getColor(R.color.non_dyn_deck));
                    return true;
                } else if (text.equals("d1")) {
                    ((TextView) view).setTextColor(getResources().getColor(R.color.dyn_deck));
                    return true;
                }
            }
            // } else if (view.getId() == R.id.deckpicker_bar_mat || view.getId() == R.id.deckpicker_bar_all) {
            // if (text.length() > 0 && !text.equals("-1.0")) {
            // View parent = (View)view.getParent().getParent();
            // if (text.equals("-2")) {
            // parent.setVisibility(View.GONE);
            // } else {
            // Utils.updateProgressBars(view, (int) UIUtils.getDensityAdjustedValue(DeckPicker.this, 3.4f),
            // (int) (Double.parseDouble(text) * ((View)view.getParent().getParent().getParent()).getHeight()));
            // if (parent.getVisibility() == View.INVISIBLE) {
            // parent.setVisibility(View.VISIBLE);
            // parent.setAnimation(ViewAnimation.fade(ViewAnimation.FADE_IN, 500, 0));
            // }
            // }
            // }
            // return true;
            // } else if (view.getVisibility() == View.INVISIBLE) {
            // if (!text.equals("-1")) {
            // view.setVisibility(View.VISIBLE);
            // view.setAnimation(ViewAnimation.fade(ViewAnimation.FADE_IN, 500, 0));
            // return false;
            // }
            // } else if (text.equals("-1")){
            // view.setVisibility(View.INVISIBLE);
            // return false;
            return false;
        }
    });
    mDeckListView.setOnItemClickListener(mDeckSelHandler);
    mDeckListView.setAdapter(mDeckListAdapter);

    if (mFragmented) {
        mDeckListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
    }

    registerForContextMenu(mDeckListView);

    showStartupScreensAndDialogs(preferences, 0);

    if (mSwipeEnabled) {
        gestureDetector = new GestureDetector(new MyGestureDetector());
        mDeckListView.setOnTouchListener(new View.OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {
                if (gestureDetector.onTouchEvent(event)) {
                    return true;
                }
                return false;
            }
        });
    }
}

From source file:com.ichi2.anki2.Reviewer.java

private void initLayout(Integer layout) {
    setContentView(layout);/*from  ww  w  .  j  av  a2  s  .c  o m*/

    mMainLayout = findViewById(R.id.main_layout);
    Themes.setContentStyle(mMainLayout, Themes.CALLER_REVIEWER);

    mCardContainer = (FrameLayout) findViewById(R.id.flashcard_frame);
    setInAnimation(false);

    findViewById(R.id.top_bar).setOnClickListener(mCardStatisticsListener);

    mCardFrame = (FrameLayout) findViewById(R.id.flashcard);
    mTouchLayer = (FrameLayout) findViewById(R.id.touch_layer);
    mTouchLayer.setOnTouchListener(mGestureListener);
    if (mPrefTextSelection && mLongClickWorkaround) {
        mTouchLayer.setOnLongClickListener(mLongClickListener);
    }
    if (mPrefTextSelection) {
        mClipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
    }
    mCardFrame.removeAllViews();
    if (!mChangeBorderStyle) {
        ((View) findViewById(R.id.flashcard_border)).setVisibility(View.VISIBLE);
    }
    // hunt for input issue 720, like android issue 3341
    if (AnkiDroidApp.SDK_VERSION <= 7 && (mCard != null)) {
        mCard.setFocusableInTouchMode(true);
    }

    // Initialize swipe
    gestureDetector = new GestureDetector(new MyGestureDetector());

    mProgressBar = (ProgressBar) findViewById(R.id.flashcard_progressbar);

    // initialise shake detection
    if (mShakeEnabled) {
        mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        mSensorManager.registerListener(mSensorListener,
                mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
        mAccel = 0.00f;
        mAccelCurrent = SensorManager.GRAVITY_EARTH;
        mAccelLast = SensorManager.GRAVITY_EARTH;
    }

    Resources res = getResources();

    mEase1 = (Button) findViewById(R.id.ease1);
    mEase1.setTextColor(res.getColor(R.color.next_time_failed_color));
    mEase1Layout = (LinearLayout) findViewById(R.id.flashcard_layout_ease1);
    mEase1Layout.setOnClickListener(mSelectEaseHandler);

    mEase2 = (Button) findViewById(R.id.ease2);
    mEase2.setTextColor(res.getColor(R.color.next_time_usual_color));
    mEase2Layout = (LinearLayout) findViewById(R.id.flashcard_layout_ease2);
    mEase2Layout.setOnClickListener(mSelectEaseHandler);

    mEase3 = (Button) findViewById(R.id.ease3);
    mEase3Layout = (LinearLayout) findViewById(R.id.flashcard_layout_ease3);
    mEase3Layout.setOnClickListener(mSelectEaseHandler);

    mEase4 = (Button) findViewById(R.id.ease4);
    mEase4Layout = (LinearLayout) findViewById(R.id.flashcard_layout_ease4);
    mEase4Layout.setOnClickListener(mSelectEaseHandler);

    mNext1 = (TextView) findViewById(R.id.nextTime1);
    mNext2 = (TextView) findViewById(R.id.nextTime2);
    mNext3 = (TextView) findViewById(R.id.nextTime3);
    mNext4 = (TextView) findViewById(R.id.nextTime4);

    mNext1.setTextColor(res.getColor(R.color.next_time_failed_color));
    mNext2.setTextColor(res.getColor(R.color.next_time_usual_color));

    if (!mshowNextReviewTime) {
        ((TextView) findViewById(R.id.nextTimeflip)).setVisibility(View.GONE);
        mNext1.setVisibility(View.GONE);
        mNext2.setVisibility(View.GONE);
        mNext3.setVisibility(View.GONE);
        mNext4.setVisibility(View.GONE);
    }

    mFlipCard = (Button) findViewById(R.id.flip_card);
    mFlipCardLayout = (LinearLayout) findViewById(R.id.flashcard_layout_flip);
    mFlipCardLayout.setOnClickListener(mFlipCardListener);

    mTextBarRed = (TextView) findViewById(R.id.red_number);
    mTextBarBlack = (TextView) findViewById(R.id.black_number);
    mTextBarBlue = (TextView) findViewById(R.id.blue_number);

    if (mShowProgressBars) {
        mSessionProgressTotalBar = (View) findViewById(R.id.daily_bar);
        mSessionProgressBar = (View) findViewById(R.id.session_progress);
        mProgressBars = (LinearLayout) findViewById(R.id.progress_bars);
    }

    mCardTimer = (Chronometer) findViewById(R.id.card_time);
    if (mShowProgressBars && mProgressBars.getVisibility() != View.VISIBLE) {
        switchVisibility(mProgressBars, View.VISIBLE);
    }

    mChosenAnswer = (TextView) findViewById(R.id.choosen_answer);

    if (mPrefWhiteboard) {
        mWhiteboard = new Whiteboard(this, mInvertedColors, mBlackWhiteboard);
        FrameLayout.LayoutParams lp2 = new FrameLayout.LayoutParams(LayoutParams.FILL_PARENT,
                LayoutParams.FILL_PARENT);
        mWhiteboard.setLayoutParams(lp2);
        FrameLayout fl = (FrameLayout) findViewById(R.id.whiteboard);
        fl.addView(mWhiteboard);

        mWhiteboard.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (mShowWhiteboard) {
                    return false;
                }
                if (gestureDetector.onTouchEvent(event)) {
                    return true;
                }
                return false;
            }
        });
    }
    mAnswerField = (EditText) findViewById(R.id.answer_field);

    mNextTimeTextColor = getResources().getColor(R.color.next_time_usual_color);
    mNextTimeTextRecomColor = getResources().getColor(R.color.next_time_recommended_color);
    mForegroundColor = getResources().getColor(R.color.next_time_usual_color);
    if (mInvertedColors) {
        invertColors(true);
    }

    mLookUpIcon = findViewById(R.id.lookup_button);
    mLookUpIcon.setVisibility(View.GONE);
    mLookUpIcon.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            if (clipboardHasText()) {
                lookUp();
            }
        }

    });
    initControls();
}

From source file:com.nit.vicky.Reviewer.java

private void initLayout(Integer layout) {
    setContentView(layout);/*from   w w w  . jav a 2s  . c  o  m*/

    mMainLayout = findViewById(R.id.main_layout);
    Themes.setContentStyle(mMainLayout, Themes.CALLER_REVIEWER);

    mCardContainer = (FrameLayout) findViewById(R.id.flashcard_frame);
    setInAnimation(false);

    findViewById(R.id.top_bar).setOnClickListener(mCardStatisticsListener);

    mCardFrame = (FrameLayout) findViewById(R.id.flashcard);
    mTouchLayer = (FrameLayout) findViewById(R.id.touch_layer);
    mTouchLayer.setOnTouchListener(mGestureListener);
    if (mPrefTextSelection && mLongClickWorkaround) {
        mTouchLayer.setOnLongClickListener(mLongClickListener);
    }
    if (mPrefTextSelection) {
        mClipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
    }
    mCardFrame.removeAllViews();
    if (!mChangeBorderStyle) {
        ((View) findViewById(R.id.flashcard_border)).setVisibility(View.VISIBLE);
    }
    // hunt for input issue 720, like android issue 3341
    if (AnkiDroidApp.SDK_VERSION <= 7 && (mCard != null)) {
        mCard.setFocusableInTouchMode(true);
    }

    // Initialize swipe
    gestureDetector = new GestureDetector(new MyGestureDetector());

    mProgressBar = (ProgressBar) findViewById(R.id.flashcard_progressbar);

    // initialise shake detection
    if (mShakeEnabled) {
        mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        mSensorManager.registerListener(mSensorListener,
                mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
        mAccel = 0.00f;
        mAccelCurrent = SensorManager.GRAVITY_EARTH;
        mAccelLast = SensorManager.GRAVITY_EARTH;
    }

    Resources res = getResources();

    mEase1 = (Button) findViewById(R.id.ease1);
    mEase1.setTextColor(res.getColor(R.color.next_time_failed_color));
    mEase1Layout = (LinearLayout) findViewById(R.id.flashcard_layout_ease1);
    mEase1Layout.setOnClickListener(mSelectEaseHandler);

    mEase2 = (Button) findViewById(R.id.ease2);
    mEase2.setTextColor(res.getColor(R.color.next_time_usual_color));
    mEase2Layout = (LinearLayout) findViewById(R.id.flashcard_layout_ease2);
    mEase2Layout.setOnClickListener(mSelectEaseHandler);

    mEase3 = (Button) findViewById(R.id.ease3);
    mEase3Layout = (LinearLayout) findViewById(R.id.flashcard_layout_ease3);
    mEase3Layout.setOnClickListener(mSelectEaseHandler);

    mEase4 = (Button) findViewById(R.id.ease4);
    mEase4Layout = (LinearLayout) findViewById(R.id.flashcard_layout_ease4);
    mEase4Layout.setOnClickListener(mSelectEaseHandler);

    mNext1 = (TextView) findViewById(R.id.nextTime1);
    mNext2 = (TextView) findViewById(R.id.nextTime2);
    mNext3 = (TextView) findViewById(R.id.nextTime3);
    mNext4 = (TextView) findViewById(R.id.nextTime4);

    mNext1.setTextColor(res.getColor(R.color.next_time_failed_color));
    mNext2.setTextColor(res.getColor(R.color.next_time_usual_color));

    if (!mShowNextReviewTime) {
        ((TextView) findViewById(R.id.nextTimeflip)).setVisibility(View.GONE);
        mNext1.setVisibility(View.GONE);
        mNext2.setVisibility(View.GONE);
        mNext3.setVisibility(View.GONE);
        mNext4.setVisibility(View.GONE);
    }

    mFlipCard = (Button) findViewById(R.id.flip_card);
    mFlipCardLayout = (LinearLayout) findViewById(R.id.flashcard_layout_flip);
    mFlipCardLayout.setOnClickListener(mFlipCardListener);

    mTextBarRed = (TextView) findViewById(R.id.red_number);
    mTextBarBlack = (TextView) findViewById(R.id.black_number);
    mTextBarBlue = (TextView) findViewById(R.id.blue_number);

    if (!mShowRemainingCardCount) {
        mTextBarRed.setVisibility(View.GONE);
        mTextBarBlack.setVisibility(View.GONE);
        mTextBarBlue.setVisibility(View.GONE);
    }

    if (mShowProgressBars) {
        mSessionProgressTotalBar = (View) findViewById(R.id.daily_bar);
        mSessionProgressBar = (View) findViewById(R.id.session_progress);
        mProgressBars = (LinearLayout) findViewById(R.id.progress_bars);
    }

    mCardTimer = (Chronometer) findViewById(R.id.card_time);
    if (mShowProgressBars && mProgressBars.getVisibility() != View.VISIBLE) {
        switchVisibility(mProgressBars, View.VISIBLE);
    }

    mChosenAnswer = (TextView) findViewById(R.id.choosen_answer);

    if (mPrefWhiteboard) {
        mWhiteboard = new Whiteboard(this, mInvertedColors, mBlackWhiteboard);
        FrameLayout.LayoutParams lp2 = new FrameLayout.LayoutParams(LayoutParams.FILL_PARENT,
                LayoutParams.FILL_PARENT);
        mWhiteboard.setLayoutParams(lp2);
        FrameLayout fl = (FrameLayout) findViewById(R.id.whiteboard);
        fl.addView(mWhiteboard);

        mWhiteboard.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (mShowWhiteboard) {
                    return false;
                }
                if (gestureDetector.onTouchEvent(event)) {
                    return true;
                }
                return false;
            }
        });
    }
    mAnswerField = (EditText) findViewById(R.id.answer_field);

    mNextTimeTextColor = getResources().getColor(R.color.next_time_usual_color);
    mNextTimeTextRecomColor = getResources().getColor(R.color.next_time_recommended_color);
    mForegroundColor = getResources().getColor(R.color.next_time_usual_color);
    if (mInvertedColors) {
        invertColors(true);
    }

    mLookUpIcon = findViewById(R.id.lookup_button);
    mLookUpIcon.setVisibility(View.GONE);
    mLookUpIcon.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            if (clipboardHasText()) {
                lookUp();
            }
        }

    });
    initControls();
}

From source file:com.hichinaschool.flashcards.anki.Reviewer.java

private void initLayout(Integer layout) {
    setContentView(layout);//from  www .  j  a  v  a2 s  .  c  om

    mMainLayout = findViewById(R.id.main_layout);
    Themes.setContentStyle(mMainLayout, Themes.CALLER_REVIEWER);

    mCardContainer = (FrameLayout) findViewById(R.id.flashcard_frame);
    setInAnimation(false);

    findViewById(R.id.top_bar).setOnClickListener(mCardStatisticsListener);

    mCardFrame = (FrameLayout) findViewById(R.id.flashcard);
    mTouchLayer = (FrameLayout) findViewById(R.id.touch_layer);
    mTouchLayer.setOnTouchListener(mGestureListener);
    if (mPrefTextSelection && mLongClickWorkaround) {
        mTouchLayer.setOnLongClickListener(mLongClickListener);
    }
    if (mPrefTextSelection) {
        mClipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
    }
    mCardFrame.removeAllViews();
    if (!mChangeBorderStyle) {
        ((View) findViewById(R.id.flashcard_border)).setVisibility(View.VISIBLE);
    }
    // hunt for input issue 720, like android issue 3341
    if (AnkiDroidApp.SDK_VERSION <= 7 && (mCard != null)) {
        mCard.setFocusableInTouchMode(true);
    }

    // Initialize swipe
    gestureDetector = new GestureDetector(new MyGestureDetector());

    mProgressBar = (ProgressBar) findViewById(R.id.flashcard_progressbar);

    // initialise shake detection
    if (mShakeEnabled) {
        mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        mSensorManager.registerListener(mSensorListener,
                mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
        mAccel = 0.00f;
        mAccelCurrent = SensorManager.GRAVITY_EARTH;
        mAccelLast = SensorManager.GRAVITY_EARTH;
    }

    Resources res = getResources();

    mEase1 = (Button) findViewById(R.id.ease1);
    mEase1.setTextColor(res.getColor(R.color.next_time_failed_color));
    mEase1Layout = (LinearLayout) findViewById(R.id.flashcard_layout_ease1);
    mEase1Layout.setOnClickListener(mSelectEaseHandler);

    mEase2 = (Button) findViewById(R.id.ease2);
    mEase2.setTextColor(res.getColor(R.color.next_time_usual_color));
    mEase2Layout = (LinearLayout) findViewById(R.id.flashcard_layout_ease2);
    mEase2Layout.setOnClickListener(mSelectEaseHandler);

    mEase3 = (Button) findViewById(R.id.ease3);
    mEase3Layout = (LinearLayout) findViewById(R.id.flashcard_layout_ease3);
    mEase3Layout.setOnClickListener(mSelectEaseHandler);

    mEase4 = (Button) findViewById(R.id.ease4);
    mEase4Layout = (LinearLayout) findViewById(R.id.flashcard_layout_ease4);
    mEase4Layout.setOnClickListener(mSelectEaseHandler);

    mNext1 = (TextView) findViewById(R.id.nextTime1);
    mNext2 = (TextView) findViewById(R.id.nextTime2);
    mNext3 = (TextView) findViewById(R.id.nextTime3);
    mNext4 = (TextView) findViewById(R.id.nextTime4);

    mNext1.setTextColor(res.getColor(R.color.next_time_failed_color));
    mNext2.setTextColor(res.getColor(R.color.next_time_usual_color));

    if (!mShowNextReviewTime) {
        ((TextView) findViewById(R.id.nextTimeflip)).setVisibility(View.GONE);
        mNext1.setVisibility(View.GONE);
        mNext2.setVisibility(View.GONE);
        mNext3.setVisibility(View.GONE);
        mNext4.setVisibility(View.GONE);
    }

    mFlipCard = (Button) findViewById(R.id.flip_card);
    mFlipCardLayout = (LinearLayout) findViewById(R.id.flashcard_layout_flip);
    mFlipCardLayout.setOnClickListener(mFlipCardListener);

    mTextBarRed = (TextView) findViewById(R.id.red_number);
    mTextBarBlack = (TextView) findViewById(R.id.black_number);
    mTextBarBlue = (TextView) findViewById(R.id.blue_number);

    if (!mShowRemainingCardCount) {
        mTextBarRed.setVisibility(View.GONE);
        mTextBarBlack.setVisibility(View.GONE);
        mTextBarBlue.setVisibility(View.GONE);
    }

    if (mShowProgressBars) {
        mSessionProgressTotalBar = (View) findViewById(R.id.daily_bar);
        mSessionProgressBar = (View) findViewById(R.id.session_progress);
        mProgressBars = (LinearLayout) findViewById(R.id.progress_bars);
    }

    mCardTimer = (Chronometer) findViewById(R.id.card_time);
    if (mShowProgressBars && mProgressBars.getVisibility() != View.VISIBLE) {
        //            switchVisibility(mProgressBars, View.VISIBLE);
    }

    mChosenAnswer = (TextView) findViewById(R.id.choosen_answer);

    if (mPrefWhiteboard) {
        mWhiteboard = new Whiteboard(this, mInvertedColors, mBlackWhiteboard);
        FrameLayout.LayoutParams lp2 = new FrameLayout.LayoutParams(LayoutParams.FILL_PARENT,
                LayoutParams.FILL_PARENT);
        mWhiteboard.setLayoutParams(lp2);
        FrameLayout fl = (FrameLayout) findViewById(R.id.whiteboard);
        fl.addView(mWhiteboard);

        mWhiteboard.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (mShowWhiteboard) {
                    return false;
                }
                if (gestureDetector.onTouchEvent(event)) {
                    return true;
                }
                return false;
            }
        });
    }
    mAnswerField = (EditText) findViewById(R.id.answer_field);

    mNextTimeTextColor = getResources().getColor(R.color.next_time_usual_color);
    mNextTimeTextRecomColor = getResources().getColor(R.color.next_time_recommended_color);
    mForegroundColor = getResources().getColor(R.color.next_time_usual_color);
    if (mInvertedColors) {
        invertColors(true);
    }

    mLookUpIcon = findViewById(R.id.lookup_button);
    mLookUpIcon.setVisibility(View.GONE);
    mLookUpIcon.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            if (clipboardHasText()) {
                lookUp();
            }
        }

    });
    initControls();
}

From source file:com.zoffcc.applications.zanavi.Navit.java

/** Called when the activity is first created. */
// ----------- remove later -------------
// ----------- remove later -------------
@SuppressLint("NewApi")
// ----------- remove later -------------
// ----------- remove later -------------
@TargetApi(Build.VERSION_CODES.FROYO)//  ww w  .  jav a2  s.  co  m
@Override
public void onCreate(Bundle savedInstanceState) {
    // if (Navit.METHOD_DEBUG) Navit.my_func_name(0);

    // ------- only after API level 9 -------
    // ------- only after API level 9 -------
    //      try
    //      {
    //         StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectAll().penaltyDeath().penaltyLog().build());
    //         StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectAll().penaltyLog().build());
    //
    //         StrictMode.ThreadPolicy old = StrictMode.getThreadPolicy();
    //         StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder(old).permitDiskWrites().build());
    //         old = StrictMode.getThreadPolicy();
    //         StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder(old).permitDiskReads().build());
    //
    //      }
    //      catch (NoClassDefFoundError e)
    //      {
    //      }
    // ------- only after API level 9 -------
    // ------- only after API level 9 -------

    // Log.e("Navit", "OnCreate");

    //      if (checkPlayServices())
    //      {
    //      }

    ZANaviMainApplication.restore_error_msg(this.getApplicationContext());

    // app_status_lastalive = PreferenceManager.getDefaultSharedPreferences(this).getLong(PREF_KEY_LASTALIVE, -1L);
    app_status_string = PreferenceManager.getDefaultSharedPreferences(this).getString(PREF_KEY_CRASH, "down");

    if (FDBL) {
        p.PREF_enable_debug_crashdetect = PreferenceManager.getDefaultSharedPreferences(this)
                .getBoolean("enable_debug_crashdetect", true);
    } else {
        p.PREF_enable_debug_crashdetect = PreferenceManager.getDefaultSharedPreferences(this)
                .getBoolean("enable_debug_crashdetect", PLAYSTORE_VERSION_CRASHDETECT);
    }

    System.out.println("app_status_string get:[onCreate]" + app_status_string);
    System.out.println("app_status_string=" + app_status_string);
    // System.out.println("app_status_string:app_status_lastalive=" + app_status_lastalive);

    if (app_status_string.compareToIgnoreCase("down") != 0) {
        if (Navit.CI_ALLOWCRASHREPORTS) {
            intro_flag_crash = true;
            System.out.println("app_status_string:1:" + "intro_flag_crash=" + intro_flag_crash);
        } else {
            intro_flag_crash = false;
        }
    } else {
        intro_flag_crash = false;
    }

    //      if (System.currentTimeMillis() > app_status_lastalive + allowed_seconds_alive_for_crash)
    //      {
    //         // reset crash flag after X seconds
    //         intro_flag_crash = false;
    //      }

    if (checkForUpdate()) {
        // reset crash flag if we just updated
        intro_flag_crash = false;
    }

    if (!p.PREF_enable_debug_crashdetect) {
        // reset crash flag if we preference set to "false"
        intro_flag_crash = false;
    }

    // --- if we have no stacktrace -> don't show crash screen ----------
    if (intro_flag_crash) {
        try {
            if (ZANaviMainApplication.last_stack_trace_as_string == null) {
                intro_flag_crash = false;
            } else if (ZANaviMainApplication.last_stack_trace_as_string.length() < 2) {
                intro_flag_crash = false;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    // --- if we have no stacktrace -> don't show crash screen ----------

    System.out.println("app_status_string:2:" + "intro_flag_crash=" + intro_flag_crash);

    try {
        app_status_string = "running";
        PreferenceManager.getDefaultSharedPreferences(this).edit().putString(PREF_KEY_CRASH, "running")
                .commit();
        System.out.println("app_status_string set:[onCreate]" + app_status_string);
    } catch (Exception e) {
        e.printStackTrace();
    }

    api_version_int = Integer.valueOf(android.os.Build.VERSION.SDK);
    System.out.println("XXX:API=" + api_version_int);
    if (api_version_int > 10) {
        Navit.PAINT_OLD_API = false;
    } else {
        Navit.PAINT_OLD_API = true;
    }

    getPrefs_theme();
    getPrefs_theme_main();
    Navit.applySharedTheme(this, p.PREF_current_theme_M);

    super.onCreate(savedInstanceState);

    Global_Navit_Object = this;
    asset_mgr = getAssets();

    PackageInfo pInfo;
    try {
        pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
        ZANAVI_VERSION = pInfo.versionName;
    } catch (NameNotFoundException e4) {
    }

    // Intent intent = new Intent(this, ZANaviAboutPage.class);
    // startActivity(intent);

    // --------- check permissions -----------
    // --------- check permissions -----------
    // --------- check permissions -----------

    /*
     * 
     * <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
     * <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
     * <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
     * <uses-permission android:name="android.permission.WAKE_LOCK" />
     * <uses-permission android:name="android.permission.INTERNET" />
     * <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
     * <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     */

    //if (EasyPermissions.hasPermissions(this, perms))
    //{
    //   // have permissions!
    //}
    //else
    //{
    //   // ask for permissions
    //   EasyPermissions.requestPermissions(this, Navit.get_text("ZANavi needs some permissions..."), RC_PERM_001, perms);
    //}
    // --------- check permissions -----------
    // --------- check permissions -----------
    // --------- check permissions -----------

    OSD_blueish_bg_color = getResources().getColor(R.color.blueish_bg_color);

    // getBaseContext_ = getBaseContext().getApplicationContext();
    getBaseContext_ = getBaseContext();

    last_orientation = getResources().getConfiguration().orientation;

    content_resolver = getContentResolver();
    // get_reglevel();

    Display display_ = getWindowManager().getDefaultDisplay();
    metrics = new DisplayMetrics();
    display_.getMetrics(Navit.metrics);

    road_book_items = new ArrayList<ListViewItem>();
    fragmentManager = getSupportFragmentManager();

    setContentView(R.layout.main_layout);

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    if (toolbar != null) {
        try {
            setSupportActionBar(toolbar);
            // System.out.println("TTT01:" + toolbar);
        } catch (NoClassDefFoundError e) {
        }
    }

    try {
        getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE);
        getSupportActionBar().setDisplayUseLogoEnabled(false);
        getSupportActionBar().setIcon(R.drawable.icon);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
        getSupportActionBar().setDisplayShowTitleEnabled(false);
    } catch (NoClassDefFoundError e) {
    } catch (Exception e) {
        e.printStackTrace();
    }

    progressbar_main_activity = (ProgressBar) findViewById(R.id.progressbar_main_activity);
    progressbar_main_activity.setVisibility(View.GONE);
    progressbar_main_activity.setProgress(0);

    // ------------ bottom bar slider ----------------
    // ------------ bottom bar slider ----------------
    // ------------ bottom bar slider ----------------

    if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
        smaller_top_bar(true);
    } else {
        smaller_top_bar(false);
    }

    bottom_bar_px = (int) getResources().getDimension(R.dimen.gui_top_container_height);
    // System.out.println("VVV:bottom_bar_height:" + bottom_bar_px);
    bottom_bar_slider_shadow_px = (int) getResources()
            .getDimension(R.dimen.bottom_slide_view_shadow_compat_height);
    // System.out.println("VVV:bottom_bar_slider_shadow_px:" + bottom_bar_slider_shadow_px);

    // final RelativeLayout a = (RelativeLayout) findViewById(R.id.bottom_bar_container);
    final FrameLayout a = (FrameLayout) findViewById(R.id.bottom_bar_slide);
    final RelativeLayout.LayoutParams pp22 = (RelativeLayout.LayoutParams) a.getLayoutParams();

    // Calculate ToolBar height
    try {
        TypedValue tv = new TypedValue();
        if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) {
            actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data,
                    getResources().getDisplayMetrics());
            System.out.println("VVV:abh:" + actionBarHeight);
        } else {
            actionBarHeight = NavitGraphics.dp_to_px(144);
        }
    } catch (Exception e) {
        actionBarHeight = NavitGraphics.dp_to_px(144);
    }

    final android.support.v7.widget.Toolbar view_toolbar_top = (android.support.v7.widget.Toolbar) findViewById(
            R.id.toolbar);
    ViewTreeObserver vto = view_toolbar_top.getViewTreeObserver();
    vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            view_toolbar_top.getViewTreeObserver().removeGlobalOnLayoutListener(this);
            // int width = view_toolbar_top.getMeasuredWidth();
            int height = view_toolbar_top.getMeasuredHeight();
            Navit.actionBarHeight = height;
            // System.out.println("hhh:88=" + Navit.actionBarHeight);
            Navit.cur_y_margin_bottom_bar_touch = Navit.map_view_height + Navit.actionBarHeight + bottom_bar_px
                    - Navit.bottom_bar_slider_shadow_px; // try to put view at bottom

            pp22.setMargins(0, (int) Navit.cur_y_margin_bottom_bar_touch, 0, 0); // left, top, right, bottom
            a.setLayoutParams(pp22);
            a.requestLayout();
        }
    });

    // actionBarHeight = 168;

    //      final int SWIPE_MIN_DISTANCE = NavitGraphics.dp_to_px(25);
    //      final float SWIPE_THRESHOLD_VELOCITY = 5.5f;
    //      final float FLING_PIXELS_PER_SECOND = 100;
    //      final float maxFlingVelocity = ViewConfiguration.get(this).getScaledMaximumFlingVelocity();
    final ViewConfiguration vc = ViewConfiguration.get(this);
    final int swipeMinDistance = vc.getScaledPagingTouchSlop();
    final int swipeThresholdVelocity = vc.getScaledMinimumFlingVelocity();
    swipeMaxOffPath = vc.getScaledTouchSlop();
    // (there is also vc.getScaledMaximumFlingVelocity() one could check against)

    // setup some values --------
    NavitGraphics.long_press_on_screen_max_distance = swipeMaxOffPath;
    // setup some values --------

    class MyGestureDetector extends SimpleOnGestureListener {
        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
            try {
                //               float velocityPercentY = velocityY / maxFlingVelocity; // the percent is a value in the range of (0, 1]
                //               float normalizedVelocityY = velocityPercentY * FLING_PIXELS_PER_SECOND; // where PIXELS_PER_SECOND is a device-independent measurement

                //               System.out.println("VVV:" + (e1.getY() - e2.getY()) + " " + NavitGraphics.dp_to_px((int) (e1.getY() - e2.getY())) + " " + maxFlingVelocity + " " + velocityY + " " + velocityPercentY + " " + normalizedVelocityY + " " + SWIPE_THRESHOLD_VELOCITY);

                // System.out.println("VVV:2:" + swipeMinDistance + " " + swipeThresholdVelocity + " " + swipeMaxOffPath);

                // bottom to top
                if (e1.getY() - e2.getY() > swipeMinDistance && Math.abs(velocityY) > swipeThresholdVelocity) {
                    //int featureWidth = getMeasuredWidth();
                    //mActiveFeature = (mActiveFeature < (mItems.size() - 1)) ? mActiveFeature + 1 : mItems.size() - 1;
                    //smoothScrollTo(mActiveFeature * featureWidth, 0);
                    //System.out.println("GS:002:up:" + velocityY + " " + e2.getY() + " " + e1.getY());

                    animate_bottom_bar_up();

                    return true;
                }
                // top to bottom
                else if (e2.getY() - e1.getY() > swipeMinDistance
                        && Math.abs(velocityY) > swipeThresholdVelocity) {
                    //int featureWidth = getMeasuredWidth();
                    //mActiveFeature = (mActiveFeature > 0) ? mActiveFeature - 1 : 0;
                    //smoothScrollTo(mActiveFeature * featureWidth, 0);
                    //System.out.println("GS:003:down:" + velocityY + " " + e1.getY() + " " + e2.getY());

                    animate_bottom_bar_down();

                    return true;
                }
            } catch (Exception e) {
                //System.out.println("GS:009:EE:" + e.getMessage());
            }
            return false;
        }
    }
    mGestureDetector = new GestureDetector(new MyGestureDetector());

    push_pin_view = (ImageView) findViewById(R.id.bottom_slide_left_side);
    push_pin_view.setOnClickListener(new ImageView.OnClickListener() {
        public void onClick(View v) {
            try {
                toggle_follow_button();
            } catch (Exception e) {
            }
        }
    });

    cur_y_margin_bottom_bar_touch = 0; // try to put view at bottom

    a.setOnTouchListener(new View.OnTouchListener() {
        @Override
        synchronized public boolean onTouch(View v, MotionEvent m) {

            int action = m.getAction();

            if (mGestureDetector.onTouchEvent(m)) {
                //System.out.println("GS:001:fling!!");
                // System.out.println("FRAG:fling:011");
                return true;
            } else if (action == MotionEvent.ACTION_DOWN) {
                last_y_bottom_bar_touch = m.getY();

                // put roadbook into layout -----------
                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

                try {
                    if (road_book == null) {
                        road_book = new ZANaviRoadbookFragment();
                        // System.out.println("FRAG:attach:001");
                        fragmentTransaction.replace(R.id.roadbook_fragment_container, road_book, "");
                        fragmentTransaction.commitAllowingStateLoss();
                        // fragmentTransaction.show(road_book);
                    } else {
                        // System.out.println("FRAG:attached:003");
                    }
                } catch (Exception ef) {
                }
                // put roadbook into layout -----------

                return true;
            } else if ((action == MotionEvent.ACTION_UP) || (action == MotionEvent.ACTION_CANCEL)) {
                // System.out.println("FRAG:up/cancel:012");

                // release
                if (cur_y_margin_bottom_bar_touch > (bottom_y_margin_bottom_bar_touch / 2)) {
                    // snap back to bottom
                    animate_bottom_bar_down();
                } else {
                    // snap top top
                    animate_bottom_bar_up();
                }
            } else
            // if (action == MotionEvent.ACTION_MOVE)
            {
                // System.out.println("FRAG:*else*:012");

                if (Math.abs(last_y_bottom_bar_touch - m.getY()) > 2) {
                    float last_margin = cur_y_margin_bottom_bar_touch;
                    cur_y_margin_bottom_bar_touch = cur_y_margin_bottom_bar_touch
                            - (last_y_bottom_bar_touch - m.getY());

                    if ((cur_y_margin_bottom_bar_touch >= 0)
                            && (cur_y_margin_bottom_bar_touch <= bottom_y_margin_bottom_bar_touch)) {
                        // System.out.println("VVV:move:" + cur_y_margin_bottom_bar_touch + " " + bottom_y_margin_bottom_bar_touch);

                        last_y_bottom_bar_touch = m.getY() + (last_y_bottom_bar_touch - m.getY());
                        RelativeLayout.LayoutParams relativeParams = (RelativeLayout.LayoutParams) a
                                .getLayoutParams();
                        relativeParams.setMargins(0, (int) cur_y_margin_bottom_bar_touch, 0, 0); // left, top, right, bottom
                        a.setLayoutParams(relativeParams);
                        a.requestLayout();
                    } else {
                        // System.out.println("VVV:revert");

                        // revert position
                        cur_y_margin_bottom_bar_touch = last_margin;
                    }
                }

            }
            return true;
        }
    });
    // ------------ bottom bar slider ----------------
    // ------------ bottom bar slider ----------------
    // ------------ bottom bar slider ----------------

    // init cancel dialog!! ----------
    // init cancel dialog!! ----------
    Message msg2 = new Message();
    Bundle b2 = new Bundle();
    b2.putString("text", "");
    msg2.what = 0;
    msg2.setData(b2);
    ZANaviDownloadMapCancelActivity.canceldialog_handler.sendMessage(msg2);
    // init cancel dialog!! ----------
    // init cancel dialog!! ----------

    app_window = getWindow();

    // ---------------- set some directories -----------------
    // ---------------- set some directories -----------------
    NAVIT_DATA_DIR = this.getFilesDir().getPath();
    this.getFilesDir().mkdirs();
    // ---
    // System.out.println("data dir=" + NAVIT_DATA_DIR);
    NAVIT_DATA_SHARE_DIR = NAVIT_DATA_DIR + "/share/";
    File tmp3 = new File(NAVIT_DATA_SHARE_DIR);
    tmp3.mkdirs();
    // ---
    FIRST_STARTUP_FILE = NAVIT_DATA_SHARE_DIR + "/has_run_once.txt";
    VERSION_FILE = NAVIT_DATA_SHARE_DIR + "/version.txt";
    // ---------------- set some directories -----------------
    // ---------------- set some directories -----------------

    try {
        toneG = new ToneGenerator(AudioManager.STREAM_MUSIC, 100);
    } catch (Exception e) {
    }

    try {
        Class.forName("android.app.backup.BackupManager");
        backupManager = new BackupManager(this);
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }

    int width_ = display_.getWidth();
    int height_ = display_.getHeight();
    Log.e("Navit", "Navit -> pixels x=" + width_ + " pixels y=" + height_);
    Log.e("Navit", "Navit -> dpi=" + Navit.metrics.densityDpi);
    Log.e("Navit", "Navit -> density=" + Navit.metrics.density);
    Log.e("Navit", "Navit -> scaledDensity=" + Navit.metrics.scaledDensity);

    try {
        // send overspill factor to C-code
        Message msg33 = new Message();
        Bundle b33 = new Bundle();
        b33.putInt("Callback", 104);
        msg33.setData(b33);
        NavitGraphics.callback_handler.sendMessage(msg33);
    } catch (Exception eee) {
    }

    // ----- service -----
    // ----- service -----
    ZANaviMapDownloaderServiceIntent = new Intent(Navit.getBaseContext_, ZANaviMapDownloaderService.class);
    // ----- service -----
    // ----- service -----

    System.out.println("Navit:onCreate:JTHREAD ID=" + Thread.currentThread().getId());
    System.out.println("Navit:onCreate:THREAD ID=" + NavitGraphics.GetThreadId());

    // bitmaps for lanes
    lane_left = BitmapFactory.decodeResource(getResources(), R.drawable.lane_left);
    lane_right = BitmapFactory.decodeResource(getResources(), R.drawable.lane_right);
    lane_merge_to_left = BitmapFactory.decodeResource(getResources(), R.drawable.lane_merge_to_left);
    lane_merge_to_right = BitmapFactory.decodeResource(getResources(), R.drawable.lane_merge_to_right);
    lane_none = BitmapFactory.decodeResource(getResources(), R.drawable.lane_none);
    // bitmaps for lanes

    // paint for bitmapdrawing on map
    NavitGraphics.paint_for_map_display.setAntiAlias(true);
    NavitGraphics.paint_for_map_display.setFilterBitmap(true);

    // sky
    NavitGraphics.paint_sky_day.setAntiAlias(true);
    NavitGraphics.paint_sky_day.setColor(Color.parseColor("#79BAEC"));
    NavitGraphics.paint_sky_night.setAntiAlias(true);
    NavitGraphics.paint_sky_night.setColor(Color.parseColor("#090909"));
    // stars
    NavitGraphics.paint_sky_night_stars.setColor(Color.parseColor("#DEDDEF"));
    // twilight
    NavitGraphics.paint_sky_twilight1.setColor(Color.parseColor("#090909"));
    NavitGraphics.paint_sky_twilight2.setColor(Color.parseColor("#113268"));
    NavitGraphics.paint_sky_twilight3.setColor(Color.parseColor("#79BAEC"));

    Random m = new Random();
    int i6 = 0;
    for (i6 = 0; i6 < (NavitGraphics.max_stars + 1); i6++) {
        NavitGraphics.stars_x[i6] = m.nextFloat();
        NavitGraphics.stars_y[i6] = m.nextFloat();
        NavitGraphics.stars_size[i6] = m.nextInt(3) + 1;
    }

    res_ = getResources();
    int ii = 0;
    NavitGraphics.dl_thread_cur = 0;
    for (ii = 0; ii < NavitGraphics.dl_thread_max; ii++) {
        NavitGraphics.dl_thread[ii] = null;
    }

    String font_file_name = "Roboto-Regular.ttf"; // "LiberationSans-Regular.ttf";
    NavitStreetnameFont = Typeface.createFromAsset(getBaseContext().getAssets(), font_file_name);
    // System.out.println("NavitStreetnameFont" + NavitStreetnameFont);

    Navit_maps_loaded = false;

    // only take arguments here, onResume gets called all the time (e.g. when screenblanks, etc.)
    Navit.startup_intent = this.getIntent();
    // hack! remeber timstamp, and only allow 4 secs. later in onResume to set target!
    Navit.startup_intent_timestamp = System.currentTimeMillis();
    Log.e("Navit", "**1**A " + startup_intent.getAction());
    Log.e("Navit", "**1**D " + startup_intent.getDataString());
    Log.e("Navit", "**1**I " + startup_intent.toString());
    try {
        Log.e("Navit", "**1**DH E " + startup_intent.getExtras().describeContents());
    } catch (Exception ee) {
    }

    startup_status = Navit_Status_NORMAL_STARTUP;

    //      glSurfaceView = (GLSurfaceView) findViewById(R.id.glSurfaceView_001);
    //      glSurfaceView.setEGLContextClientVersion(2); // enable OpenGL 2.0
    //      glSurfaceView.setRenderer(new GlRenderer());
    //      glSurfaceView.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); // only render on demand
    //
    //      // draw some sample lines ----
    //      // draw some sample lines ----
    //      // draw some sample lines ----
    //      ZANaviGlLine vertLine = new ZANaviGlLine();
    //      vertLine.SetVerts(1000f, 1000f, 0f, -1000f, -1000f, 0f);
    //      vertLine.SetColor(.8f, .8f, 0f, 1.0f);
    //
    //      float[] mMVPMatrix = new float[16];
    //
    //      // Position the eye behind the origin.
    //      final float eyeX = 0.0f;
    //      final float eyeY = 0.0f;
    //      final float eyeZ = 1.5f;
    //
    //      // We are looking toward the distance
    //      final float lookX = 0.0f;
    //      final float lookY = 0.0f;
    //      final float lookZ = -5.0f;
    //
    //      // Set our up vector. This is where our head would be pointing were we holding the camera.
    //      final float upX = 0.0f;
    //      final float upY = 1.0f;
    //      final float upZ = 0.0f;
    //
    //      // Set the view matrix. This matrix can be said to represent the camera position.
    //      // NOTE: In OpenGL 1, a ModelView matrix is used, which is a combination of a model and
    //      // view matrix. In OpenGL 2, we can keep track of these matrices separately if we choose.
    //      Matrix.setLookAtM(mMVPMatrix, 0, eyeX, eyeY, eyeZ, lookX, lookY, lookZ, upX, upY, upZ);
    //
    //      vertLine.draw(mMVPMatrix);
    //
    //      glSurfaceView.postInvalidate();
    //      glSurfaceView.requestRender();
    //      glSurfaceView.postInvalidate();
    //      // draw some sample lines ----
    //      // draw some sample lines ----
    //      // draw some sample lines ----

    // setup graphics objects
    // setup graphics objects
    // setup graphics objects
    NG__vehicle = new NavitGraphics(this, 1, 0, 0, 50, 50, 65535, 0, 0);
    NG__map_main = new NavitGraphics(this, 0, 0, 0, 100, 100, 0, 0, 0);
    Navit.N_NavitGraphics = NG__map_main;
    // setup graphics objects
    // setup graphics objects
    // setup graphics objects

    NV = new NavitVehicle(this);
    NSp = new NavitSpeech2(this);

    // init translated text ------------------------------------
    // NavitTextTranslations.init();
    final Runnable r = new Runnable() {
        public void run() {
            NavitTextTranslations.init();
        }
    };
    ThreadGroup group = new ThreadGroup("Group1");
    new Thread(group, r, "ZTransInit1", 100000).start(); // use 0.1MByte stack
    // init translated text ------------------------------------

    // set the new locale here -----------------------------------
    getPrefs_loc();
    activatePrefs_loc();
    // set the new locale here -----------------------------------

    // get the local language -------------
    Locale locale = java.util.Locale.getDefault();
    String lang = locale.getLanguage();
    String langu = lang;
    String langc = lang;
    Log.e("Navit", "lang=" + lang);
    int pos = langu.indexOf('_');
    if (pos != -1) {
        langc = langu.substring(0, pos);
        langu = langc + langu.substring(pos).toUpperCase(locale);
        Log.e("Navit", "substring lang " + langu.substring(pos).toUpperCase(locale));
        // set lang. for translation
        NavitTextTranslations.main_language = langc;
        NavitTextTranslations.sub_language = langu.substring(pos).toUpperCase(locale);
    } else {
        String country = locale.getCountry();
        Log.e("Navit", "Country1 " + country);
        Log.e("Navit", "Country2 " + country.toUpperCase(locale));
        langu = langc + "_" + country.toUpperCase(locale);
        // set lang. for translation
        NavitTextTranslations.main_language = langc;
        NavitTextTranslations.sub_language = country.toUpperCase(locale);
    }
    Log.e("Navit", "Language " + lang);
    // get the local language -------------

    TextView no_maps_text = (TextView) this.findViewById(R.id.no_maps_text);
    no_maps_text.setText("\n\n\n" + Navit.get_text("No Maps installed") + "\n"
            + Navit.get_text("Please download a map") + "\n\n");

    //      if (api_version_int < 11)
    //      {
    try {
        try {
            no_maps_text.setVisibility(View.INVISIBLE);
        } catch (NoSuchMethodError e) {
        }

        try {
            no_maps_text.setActivated(false);
        } catch (NoSuchMethodError e) {
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    //      }

    // no_maps_text.postInvalidate();

    // set map cache size here -----------------------------------
    getPrefs_mapcache();
    activatePrefs_mapcache();
    // set map cache size here -----------------------------------

    // get map data dir and set it -----------------------------
    getPrefs_mapdir();
    activatePrefs_mapdir(true);
    // get map data dir and set it -----------------------------

    // get special prefs here ------------------------------------
    get_prefs_highdpi();
    // get special prefs here ------------------------------------

    // make sure the new path for the navitmap.bin file(s) exist!!
    File navit_maps_dir = new File(MAP_FILENAME_PATH);
    navit_maps_dir.mkdirs();
    // create nomedia files
    File nomedia_file = new File(MAP_FILENAME_PATH + ".nomedia");
    try {
        nomedia_file.createNewFile();
    } catch (Exception e1) {
        e1.printStackTrace();
    }
    // create nomedia files

    // check if we already have a borders.bin file (if not, then extract the included simplified one)
    File b_ = new File(MAP_FILENAME_PATH + "/borders.bin");
    try {
        if (!b_.exists()) {
            try {
                File c_ = new File(MAPMD5_FILENAME_PATH + "/borders.bin.md5");
                c_.delete();
            } catch (Exception e2) {

            }
            Log.e("Navit",
                    "trying to extract borders simple resource to:" + MAP_FILENAME_PATH + "/borders.bin");
            if (!extractRes("borders_simple", MAP_FILENAME_PATH + "/borders.bin")) {
                Log.e("Navit",
                        "Failed to extract borders simple resource to:" + MAP_FILENAME_PATH + "/borders.bin");
            }
        }
    } catch (Exception e) {

    }
    // check if we already have a borders.bin file

    // make sure the new path for config files exist
    File navit_cfg_dir = new File(CFG_FILENAME_PATH);
    navit_cfg_dir.mkdirs();

    // make sure the new path for the navitmap.bin file(s) exist!!
    File navit_mapsmd5_dir = new File(MAPMD5_FILENAME_PATH);
    navit_mapsmd5_dir.mkdirs();

    // make sure the share dir exists, otherwise the infobox will not show
    File navit_data_share_dir = new File(NAVIT_DATA_SHARE_DIR);
    navit_data_share_dir.mkdirs();

    File dd = new File(NAVIT_DATA_DEBUG_DIR);
    dd.mkdirs();

    // try to create cat. file if it does not exist
    File navit_maps_catalogue = new File(CFG_FILENAME_PATH + NavitMapDownloader.CAT_FILE);
    if (!navit_maps_catalogue.exists()) {
        FileOutputStream fos_temp;
        try {
            fos_temp = new FileOutputStream(navit_maps_catalogue);
            fos_temp.write((NavitMapDownloader.MAP_CAT_HEADER + "\n").getBytes()); // just write header to the file
            fos_temp.flush();
            fos_temp.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // ---------- downloader threads ----------------
    PackageInfo pkgInfo;
    Navit_DonateVersion_Installed = false;
    try {
        // is the donate version installed?
        pkgInfo = getPackageManager().getPackageInfo("com.zoffcc.applications.zanavi_donate", 0);
        String sharedUserId = pkgInfo.sharedUserId;
        System.out.println("str nd=" + sharedUserId);
        if (sharedUserId.equals("com.zoffcc.applications.zanavi")) {
            System.out.println("##bonus 001##");
            Navit_DonateVersion_Installed = true;
            NavitMapDownloader.MULTI_NUM_THREADS = NavitMapDownloader.MULTI_NUM_THREADS_MAX;
        }
    } catch (NameNotFoundException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }

    try {
        if (get_reglevel() == 1) {
            System.out.println("##U:bonus 001##");
            Navit_DonateVersion_Installed = true;
            NavitMapDownloader.MULTI_NUM_THREADS = NavitMapDownloader.MULTI_NUM_THREADS_MAX;
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    try {
        // is the "large map" donate version installed?
        pkgInfo = getPackageManager().getPackageInfo("com.zoffcc.applications.zanavi_largemap_donate", 0);
        String sharedUserId = pkgInfo.sharedUserId;
        System.out.println("str lm=" + sharedUserId);

        if (sharedUserId.equals("com.zoffcc.applications.zanavi")) {
            System.out.println("##bonus 002##");
            Navit_DonateVersion_Installed = true;
            Navit_Largemap_DonateVersion_Installed = true;
            NavitMapDownloader.MULTI_NUM_THREADS = NavitMapDownloader.MULTI_NUM_THREADS_MAX;
        }
    } catch (NameNotFoundException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }

    try {
        if (get_reglevel() == 1) {
            System.out.println("##U:bonus 002##");
            Navit_DonateVersion_Installed = true;
            Navit_Largemap_DonateVersion_Installed = true;
            NavitMapDownloader.MULTI_NUM_THREADS = NavitMapDownloader.MULTI_NUM_THREADS_MAX;
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    // update map list
    NavitMapDownloader.init_maps_without_donate_largemaps();
    // ---------- downloader threads ----------------

    // ---- detect menu button ----
    detect_menu_button();

    if (Navit.metrics.densityDpi >= 320) //&& (PREF_shrink_on_high_dpi))
    {
        Navit.menu_button = BitmapFactory.decodeResource(getResources(), R.drawable.menu_001);
    } else {
        Navit.menu_button = BitmapFactory.decodeResource(getResources(), R.drawable.menu_001_small);
    }

    Navit.long_green_arrow = BitmapFactory.decodeResource(getResources(), R.drawable.long_green_arrow);

    Navit.follow_on = BitmapFactory.decodeResource(getResources(), R.drawable.follow);
    Navit.follow_off = BitmapFactory.decodeResource(getResources(), R.drawable.follow_off);
    Navit.follow_current = Navit.follow_on;

    if ((Navit.metrics.densityDpi >= 320) && (p.PREF_shrink_on_high_dpi)) {
        float factor;
        factor = (float) NavitGraphics.Global_Scaled_DPI_normal / (float) Navit.metrics.densityDpi;
        factor = factor * 1.7f;
        //
        BitmapFactory.Options o = new BitmapFactory.Options();
        o.inDither = true;
        //o.inScaled = true;
        //o.inTargetDensity = NavitGraphics.Global_Scaled_DPI_normal;
        Navit.nav_arrow_stopped = BitmapFactory.decodeResource(getResources(),
                R.drawable.navigation_arrow_stopped, o);
        Navit.nav_arrow_moving = BitmapFactory.decodeResource(getResources(),
                R.drawable.navigation_arrow_moving, o);
        Navit.nav_arrow_moving_grey = BitmapFactory.decodeResource(getResources(),
                R.drawable.navigation_arrow_moving_grey, o);
        Navit.nav_arrow_moving_shadow = BitmapFactory.decodeResource(getResources(),
                R.drawable.navigation_arrow_moving_shadow, o);

        Navit.nav_arrow_stopped_small = Bitmap.createScaledBitmap(Navit.nav_arrow_stopped,
                (int) (Navit.nav_arrow_stopped.getWidth() / NavitGraphics.strech_factor_3d_map * factor),
                (int) (Navit.nav_arrow_stopped.getHeight() / NavitGraphics.strech_factor_3d_map * factor),
                true);
        Navit.nav_arrow_moving_small = Bitmap.createScaledBitmap(Navit.nav_arrow_moving,
                (int) (Navit.nav_arrow_moving.getWidth() / NavitGraphics.strech_factor_3d_map * factor),
                (int) (Navit.nav_arrow_moving.getHeight() / NavitGraphics.strech_factor_3d_map * factor), true);
        Navit.nav_arrow_moving_shadow_small = Bitmap.createScaledBitmap(Navit.nav_arrow_moving_shadow,
                (int) (Navit.nav_arrow_moving_shadow.getWidth() / NavitGraphics.strech_factor_3d_map * factor),
                (int) (Navit.nav_arrow_moving_shadow.getHeight() / NavitGraphics.strech_factor_3d_map * factor),
                true);
    } else {
        Navit.nav_arrow_stopped = BitmapFactory.decodeResource(getResources(),
                R.drawable.navigation_arrow_stopped);
        Navit.nav_arrow_moving = BitmapFactory.decodeResource(getResources(),
                R.drawable.navigation_arrow_moving);
        Navit.nav_arrow_moving_grey = BitmapFactory.decodeResource(getResources(),
                R.drawable.navigation_arrow_moving_grey);
        Navit.nav_arrow_moving_shadow = BitmapFactory.decodeResource(getResources(),
                R.drawable.navigation_arrow_moving_shadow);

        Navit.nav_arrow_stopped_small = Bitmap.createScaledBitmap(Navit.nav_arrow_stopped,
                (int) (Navit.nav_arrow_stopped.getWidth() / NavitGraphics.strech_factor_3d_map),
                (int) (Navit.nav_arrow_stopped.getHeight() / NavitGraphics.strech_factor_3d_map), true);
        Navit.nav_arrow_moving_small = Bitmap.createScaledBitmap(Navit.nav_arrow_moving,
                (int) (Navit.nav_arrow_moving.getWidth() / NavitGraphics.strech_factor_3d_map),
                (int) (1.5 * Navit.nav_arrow_moving.getHeight() / NavitGraphics.strech_factor_3d_map), true);
        Navit.nav_arrow_moving_shadow_small = Bitmap.createScaledBitmap(Navit.nav_arrow_moving_shadow,
                (int) (Navit.nav_arrow_moving_shadow.getWidth() / NavitGraphics.strech_factor_3d_map),
                (int) (1.5 * Navit.nav_arrow_moving_shadow.getHeight() / NavitGraphics.strech_factor_3d_map),
                true);
    }

    Navit.zoomin = BitmapFactory.decodeResource(getResources(), R.drawable.zoom_in_32_32);
    Navit.zoomout = BitmapFactory.decodeResource(getResources(), R.drawable.zoom_out_32_32);

    //Navit.oneway_arrow = BitmapFactory.decodeResource(getResources(), R.drawable.oneway);
    Navit.oneway_arrow = BitmapFactory.decodeResource(getResources(), R.drawable.oneway_large);
    Navit.oneway_bicycle_arrow = BitmapFactory.decodeResource(getResources(), R.drawable.oneway_bicycle_large);

    // *******************
    // *******************
    // *******************
    // *******************
    // check/init the catalogue file for downloaded maps
    NavitMapDownloader.init_cat_file();
    // *******************
    // *******************
    // *******************
    // *******************

    xmlconfig_unpack_file = false;
    write_new_version_file = false;
    try {
        NavitAppVersion = "" + this.getPackageManager().getPackageInfo(this.getPackageName(), 0).versionCode;
        NavitAppVersion_string = ""
                + this.getPackageManager().getPackageInfo(this.getPackageName(), 0).versionName;
    } catch (NameNotFoundException e) {
        e.printStackTrace();
        NavitAppVersion = "1";
        NavitAppVersion_string = "1";
    } catch (Exception e) {
        e.printStackTrace();
        NavitAppVersion = "2";
        NavitAppVersion_string = "2";
    }

    try {
        File navit_version = new File(VERSION_FILE);
        if (!navit_version.exists()) {
            System.out.println("version file does not exist");
            NavitAppVersion_prev = "-1";
            write_new_version_file = true;
        } else {
            // files exists, read in the prev. verison number
            System.out.println("version file is here");
            FileInputStream fos_temp;
            byte[] buffer = new byte[101];
            fos_temp = new FileInputStream(navit_version);
            int len = fos_temp.read(buffer, 0, 100);
            if (len != -1) {
                // use only len bytes to make the string (the rest is garbage!!)
                NavitAppVersion_prev = new String(buffer).substring(0, len);
            } else {
                NavitAppVersion_prev = "-1";
                write_new_version_file = true;
            }
            fos_temp.close();
        }

    } catch (Exception e) {
        NavitAppVersion_prev = "-1";
        write_new_version_file = true;
        e.printStackTrace();
    }

    System.out.println("vprev:" + NavitAppVersion_prev + " vcur:" + NavitAppVersion);

    intro_flag_update = false;
    if (NavitAppVersion_prev.compareTo(NavitAppVersion) != 0) {
        // different version
        System.out.println("different version!!");
        write_new_version_file = true;
        xmlconfig_unpack_file = true;

        //if ((NavitAppVersion_prev.compareTo("-1") != 0) && (NavitAppVersion.compareTo("-1") != 0))
        //{
        // user has upgraded to a new version of ZANavi
        startup_status = Navit_Status_UPGRADED_TO_NEW_VERSION;
        intro_flag_update = true;
        //}
    } else {
        // same version
        System.out.println("same version");
        xmlconfig_unpack_file = false;
    }

    // write new version file
    if (write_new_version_file) {
        try {
            System.out.println("write version file");
            FileOutputStream fos_temp;
            File navit_version = new File(VERSION_FILE);
            navit_version.delete();
            fos_temp = new FileOutputStream(navit_version);
            fos_temp.write(NavitAppVersion.getBytes());
            fos_temp.flush();
            fos_temp.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // Sample useragent strings:
    //
    //      Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0a1) Gecko/20110616 Firefox/7.0a1 SeaMonkey/2.4a1
    //      Dalvik/1.4.0 (Linux; U; Android 2.3.3; GT-I9100 Build/GINGERBREAD)
    //      Dalvik/1.2.0 (Linux; U; Android 2.2.1; GT-S5830 Build/FROYO)
    //      Dalvik/1.4.0 (Linux; U; Android 2.3.3; HTC Desire S Build/GRI40)
    //      Dalvik/1.2.0 (Linux; U; Android 2.2.2; MB525 Build/3.4.2-179)
    //      Dalvik/1.4.0 (Linux; U; Android 2.3.3; HTC Wildfire S A510e Build/GRI40)
    //      Wget/1.10.2
    //      Dalvik/1.4.0 (Linux; U; Android 2.3.3; sdk Build/GRI34)
    //      Dalvik/1.2.0 (Linux; U; Android 2.2.2; MB525 Build/3.4.2-164)
    //      Dalvik/1.2.0 (Linux; U; Android 2.2; GT-I9000 Build/FROYO)
    //      Dalvik/1.2.0 (Linux; U; Android 2.2.1; GT-S5570L Build/FROYO)
    //      Dalvik/1.2.0 (Linux; U; Android 2.2.1; GT-I9000 Build/FROYO)
    //      Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1)
    String ANDROID = android.os.Build.VERSION.SDK; //The current development codename, or the string "REL" if this is a release build.
    //String BOARD = android.os.Build.BOARD; //The name of the underlying board, like "goldfish".    
    //String BOOTLOADER = android.os.Build.BOOTLOADER; //  The system bootloader version number.
    String BRAND = android.os.Build.BRAND; //The brand (e.g., carrier) the software is customized for, if any.
    //String CPU_ABI = android.os.Build.CPU_ABI; //The name of the instruction set (CPU type + ABI convention) of native code.
    //String CPU_ABI2 = android.os.Build.CPU_ABI2; //  The name of the second instruction set (CPU type + ABI convention) of native code.
    String DEVICE = android.os.Build.DEVICE; //  The name of the industrial design.
    String DISPLAY = android.os.Build.DISPLAY; //A build ID string meant for displaying to the user
    //String FINGERPRINT = android.os.Build.FINGERPRINT; //A string that uniquely identifies this build.
    //String HARDWARE = android.os.Build.HARDWARE; //The name of the hardware (from the kernel command line or /proc).
    //String HOST = android.os.Build.HOST;
    //String ID = android.os.Build.ID; //Either a changelist number, or a label like "M4-rc20".
    String MANUFACTURER = android.os.Build.MANUFACTURER; //The manufacturer of the product/hardware.
    //String MODEL = android.os.Build.MODEL; //The end-user-visible name for the end product.
    //String PRODUCT = android.os.Build.PRODUCT; //The name of the overall product.
    //String RADIO = android.os.Build.RADIO; //The radio firmware version number.
    //String TAGS = android.os.Build.TAGS; //Comma-separated tags describing the build, like "unsigned,debug".
    //String TYPE = android.os.Build.TYPE; //The type of build, like "user" or "eng".
    //String USER = android.os.Build.USER;

    String android_version = "Android " + ANDROID;
    String android_device = MANUFACTURER + " " + BRAND + " " + DEVICE;

    if (MANUFACTURER.equalsIgnoreCase("amazon")) {
        // we are on amazon device
        ZANaviNormalDonateActivity.on_amazon_device = true;
    }

    // debug
    // debug
    // android_device = "telechips telechips m801";
    // debug
    // debug

    String android_rom_name = DISPLAY;

    if (FDBL) {
        android_rom_name = android_rom_name + "; FD";
    }

    if (Navit_DonateVersion_Installed == false) {
        UserAgentString = "Mozilla/5.0 (Linux; U; " + "Z" + NavitAppVersion + "; " + android_version + "; "
                + android_device + " " + android_rom_name + ")";
        UserAgentString_bind = "Mozilla/5.0 @__THREAD__@ (Linux; U; " + "Z" + NavitAppVersion + "; "
                + android_version + "; " + android_device + " " + android_rom_name + ")";
    } else {
        if (Navit_Largemap_DonateVersion_Installed == false) {
            UserAgentString = "Mozilla/5.0 (Linux; U; " + "donateZ" + NavitAppVersion + "; " + android_version
                    + "; " + android_device + " " + android_rom_name + ")";
            UserAgentString_bind = "Mozilla/5.0 @__THREAD__@ (Linux; U; " + "donateZ" + NavitAppVersion + "; "
                    + android_version + "; " + android_device + " " + android_rom_name + ")";
        } else

        {
            UserAgentString = "Mozilla/5.0 (Linux; U; " + "LMdonateLMZ" + NavitAppVersion + "; "
                    + android_version + "; " + android_device + " " + android_rom_name + ")";
            UserAgentString_bind = "Mozilla/5.0 @__THREAD__@ (Linux; U; " + "LMdonateLMZ" + NavitAppVersion
                    + "; " + android_version + "; " + android_device + " " + android_rom_name + ")";
        }
    }
    // System.out.println("UA=" + UserAgentString);

    // --------- enable GPS ? --------------
    // --------- enable GPS ? --------------
    //      try
    //      {
    //         final LocationManager llmanager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    //         if (!llmanager.isProviderEnabled(LocationManager.GPS_PROVIDER))
    //         {
    //            buildAlertMessageNoGps();
    //         }
    //      }
    //      catch (Exception e)
    //      {
    //         e.printStackTrace();
    //      }
    // --------- enable GPS ? --------------
    // --------- enable GPS ? --------------

    unsupported = false;
    try {
        if (android_device.toLowerCase().contains("telechips")) {
            if (android_device.toLowerCase().contains("m801")) {
                // if the donate version is already installed, dont disable the app
                if (Navit_DonateVersion_Installed == false) {
                    if (Navit_Largemap_DonateVersion_Installed == false) {
                        // activate [Weltbild] Cat Nova again (19.12.2011)
                        // ** // unsupported = true;
                    }
                }
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    try {
        // this hangs the emulator, if emulator < 2.3 (only works in emulator >= 2.3)!!
        if (!NAVIT_IS_EMULATOR) {
            sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
        }
    } catch (Exception e3) {
        e3.printStackTrace();
    }

    //      try
    //      {
    //         vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
    //      }
    //      catch (Exception e)
    //      {
    //         e.printStackTrace();
    //      }
    //sensorManager_ = sensorManager;

    // light sensor -------------------
    try {
        lightSensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
        lightsensor_max_value = lightSensor.getMaximumRange();
        lightSensorEventListener = new SensorEventListener() {
            @Override
            public void onAccuracyChanged(Sensor sensor, int accuracy) {
            }

            @Override
            public void onSensorChanged(SensorEvent event) {
                try {
                    if (p.PREF_auto_night_mode) {
                        if (event.sensor.getType() == Sensor.TYPE_LIGHT) {

                            if (Navit.DEBUG_LUX_VALUE) {
                                debug_cur_lux_value = event.values[0];
                                NavitGraphics.NavitAOverlay_s.postInvalidate();
                            }

                            // System.out.println("Current Reading(Lux): cur=" + event.values[0] + " max=" + lightsensor_max_value);

                            if (night_mode == false) {
                                if (event.values[0] < p.PREF_night_mode_lux) {
                                    night_mode = true;
                                    set_night_mode(1);
                                    draw_map();
                                }
                            } else if (night_mode == true) {
                                if (event.values[0] > (p.PREF_night_mode_lux + p.PREF_night_mode_buffer)) {
                                    night_mode = false;
                                    set_night_mode(0);
                                    draw_map();
                                }
                            }
                        }
                    } else {
                        try {
                            sensorManager.unregisterListener(lightSensorEventListener);
                            System.out.println("stop lightsensor");
                        } catch (Exception e) {
                        }

                        try {
                            night_mode = false;
                            set_night_mode(0);
                            draw_map();
                        } catch (Exception e) {
                        }
                    }
                } catch (Exception e) {
                    // e.printStackTrace();
                }
            }

        };
    } catch (Exception e) {
    }
    // light sensor -------------------

    generic_alert_box = new AlertDialog.Builder(this);
    /*
     * show info box for first time users
     */
    AlertDialog.Builder infobox = new AlertDialog.Builder(this);
    //. english text: Welcome to ZANavi
    infobox.setTitle(Navit.get_text("__INFO_BOX_TITLE__")); //TRANS
    infobox.setCancelable(false);
    final TextView message = new TextView(this);
    message.setFadingEdgeLength(20);
    message.setVerticalFadingEdgeEnabled(true);
    message.setPadding(10, 5, 10, 5);
    message.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18);
    message.setGravity(Gravity.LEFT);
    // message.setScrollBarStyle(TextView.SCROLLBARS_INSIDE_OVERLAY);
    // message.setVerticalScrollBarEnabled(true);
    RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT,
            RelativeLayout.LayoutParams.FILL_PARENT);
    rlp.leftMargin = 7;
    rlp.rightMargin = 7;

    Navit.Navit_Geocoder = null;
    try {
        // for online search
        Navit.Navit_Geocoder = new Geocoder(this);
    } catch (Exception e) {
        e.printStackTrace();
    }

    //      if (api_version_int < 11)
    //      {
    //         //TRANS
    //         infobox.setPositiveButton(Navit.get_text("Ok"), new DialogInterface.OnClickListener()
    //         {
    //            public void onClick(DialogInterface arg0, int arg1)
    //            {
    //               Log.e("Navit", "Ok, user saw the infobox");
    //            }
    //         });
    //
    //         //TRANS
    //         infobox.setNeutralButton(Navit.get_text("More info"), new DialogInterface.OnClickListener()
    //         {
    //            public void onClick(DialogInterface arg0, int arg1)
    //            {
    //               Log.e("Navit", "user wants more info, show the website");
    //               // URL to ZANavi Manual (in english language)
    //               String url = "http://zanavi.cc/index.php/Manual";
    //               if (FDBL)
    //               {
    //                  url = "http://fd.zanavi.cc/manual";
    //               }
    //               Intent i = new Intent(Intent.ACTION_VIEW);
    //               i.setData(Uri.parse(url));
    //               startActivity(i);
    //            }
    //         });
    //      }

    info_popup_seen_count_end = false;
    File navit_first_startup = new File(FIRST_STARTUP_FILE);
    // if file does NOT exist, show the info box
    if (!navit_first_startup.exists()) {
        // set first-ever-startup flag
        first_ever_startup = true;
        info_popup_seen_count_end = true; // don't show on first ever start of the app
        startup_status = Navit_Status_COMPLETE_NEW_INSTALL;
        FileOutputStream fos_temp;
        try {
            info_popup_seen_count++;
            fos_temp = new FileOutputStream(navit_first_startup);
            fos_temp.write((int) info_popup_seen_count); // use to store info popup seen count
            fos_temp.flush();
            fos_temp.close();

            //            if (api_version_int < 11)
            //            {
            //               message.setLayoutParams(rlp);
            //               //. TRANSLATORS: multiline info text for first startup of application (see en_US for english text)
            //               final SpannableString s = new SpannableString(" " + Navit.get_text("__INFO_BOX_TEXT__")); //TRANS
            //               Linkify.addLinks(s, Linkify.WEB_URLS);
            //               message.setText(s);
            //               message.setMovementMethod(LinkMovementMethod.getInstance());
            //               infobox.setView(message);
            //               infobox.show();
            //            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    } else {
        FileOutputStream fos_temp;
        FileInputStream fis_temp;
        try {
            fis_temp = new FileInputStream(navit_first_startup);
            info_popup_seen_count = fis_temp.read();
            fis_temp.close();

            if (info_popup_seen_count < 0) {
                info_popup_seen_count = 0;
            }

            // we wrote "A" -> (int)65 previously, so account for that
            if (info_popup_seen_count == 65) {
                info_popup_seen_count = 0;
            }

            if (info_popup_seen_count > info_popup_seen_count_max) {
                info_popup_seen_count_end = true;
            } else {
                info_popup_seen_count++;
                fos_temp = new FileOutputStream(navit_first_startup);
                fos_temp.write((int) info_popup_seen_count); // use to store info popup seen count
                fos_temp.flush();
                fos_temp.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /*
     * show info box for first time users
     */

    //
    // ----------- info popup
    // ----------- info popup
    // ----------- info popup
    // ----------- info popup
    //

    intro_flag_info = false;
    if ((!info_popup_seen_count_end) && (startup_status == Navit_Status_NORMAL_STARTUP)) {
        intro_flag_info = true;
    }

    System.out.println("info_popup_seen_count=" + info_popup_seen_count);
    System.out.println("info_popup_seen_count_end=" + info_popup_seen_count_end + " intro_flag_info="
            + intro_flag_info + " startup_status=" + startup_status);

    // make handler statically available for use in "msg_to_msg_handler"
    Navit_progress_h = this.progress_handler;

    //      try
    //      {
    //         Navit.bigmap_bitmap = BitmapFactory.decodeResource(getResources(), R.raw.bigmap_colors_zanavi2);
    //      }
    //      catch (Exception e)
    //      {
    //         // when not enough memory is available, then disable large world overview map!
    //         System.gc();
    //         Navit.bigmap_bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
    //      }
    //      // ------no----- // Navit.bigmap_bitmap.setDensity(120); // set our dpi!!

    try {
        setVolumeControlStream(AudioManager.STREAM_MUSIC);
        ActivityResults = new NavitActivityResult[16];
    } catch (Exception e) {
        e.printStackTrace();
    }

    try {
        NavitAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
    } catch (Exception e) {
        e.printStackTrace();
    }

    PowerManager pm = null;
    try {
        pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
    } catch (Exception e) {
        e.printStackTrace();
    }

    try {
        // -- // pm.wakeUp(SystemClock.uptimeMillis()); // -- //
        // **screen always full on** // wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE, "NavitDoNotDimScreen");
        // **screen can go off, cpu will stay on** // wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE, "NavitDoNotDimScreen");

        // this works so far, lets the screen dim, but it cpu and screen stays on
        wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP
                | PowerManager.ON_AFTER_RELEASE, "NavitDoNotDimScreen");
    } catch (Exception e) {
        e.printStackTrace();
        wl = null;
    }

    try {
        wl_cpu = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "ZANaviNeedCpu");
    } catch (Exception e) {
        e.printStackTrace();
        wl_cpu = null;
    }

    try {
        wl_navigating = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "ZANaviNavigationOn");
    } catch (Exception e) {
        Log.e("Navit", "WakeLock NAV: create failed!!");
        e.printStackTrace();
        wl_navigating = null;
    }

    //      try
    //      {
    //         if (wl_navigating != null)
    //         {
    //            wl_navigating.acquire();
    //            Log.e("Navit", "WakeLock NAV: acquire 00");
    //         }
    //      }
    //      catch (Exception e)
    //      {
    //         Log.e("Navit", "WakeLock NAV: something wrong 00");
    //         e.printStackTrace();
    //      }

    //      try
    //      {
    //         if (wl != null)
    //         {
    //            try
    //            {
    //               wl.release();
    //            }
    //            catch (Exception e2)
    //            {
    //            }
    //            wl.acquire();
    //            Log.e("Navit", "WakeLock: acquire 1");
    //         }
    //      }
    //      catch (Exception e)
    //      {
    //         e.printStackTrace();
    //      }

    // -- extract overview maps --
    // -- extract overview maps --

    // File navit_worldmap2_file = new File(NAVIT_DATA_DIR + "/share/worldmap2.txt");
    File navit_worldmap2_file = new File(MAP_FILENAME_PATH + "/worldmap2.txt");
    if (!navit_worldmap2_file.exists()) {
        if (!extractRes("worldmap2", MAP_FILENAME_PATH + "/worldmap2.txt")) {
            Log.e("Navit", "Failed to extract worldmap2.txt");
        }
    }

    File navit_worldmap5_file = new File(MAP_FILENAME_PATH + "/worldmap5.txt");
    if (!navit_worldmap5_file.exists()) {
        if (!extractRes("worldmap5", MAP_FILENAME_PATH + "/worldmap5.txt")) {
            Log.e("Navit", "Failed to extract worldmap5.txt");
        }
    }
    // -- extract overview maps --
    // -- extract overview maps --

    Log.e("Navit", "trying to extract language resource " + NavitTextTranslations.main_language + "_"
            + NavitTextTranslations.sub_language);
    if (!extractRes(NavitTextTranslations.main_language + "_" + NavitTextTranslations.sub_language,
            NAVIT_DATA_DIR + "/locale/" + NavitTextTranslations.main_language + "_"
                    + NavitTextTranslations.sub_language + "/LC_MESSAGES/navit.mo")) {
        Log.e("Navit", "Failed to extract language resource " + NavitTextTranslations.main_language + "_"
                + NavitTextTranslations.sub_language);
    }

    Log.e("Navit", "trying to extract language resource " + NavitTextTranslations.main_language + "_"
            + NavitTextTranslations.sub_language.toLowerCase());
    if (!extractRes(
            NavitTextTranslations.main_language + "_" + NavitTextTranslations.sub_language.toLowerCase(),
            NAVIT_DATA_DIR + "/locale/" + NavitTextTranslations.main_language + "_"
                    + NavitTextTranslations.sub_language + "/LC_MESSAGES/navit.mo")) {
        Log.e("Navit", "Failed to extract language resource " + NavitTextTranslations.main_language + "_"
                + NavitTextTranslations.sub_language.toLowerCase());
    }

    Log.e("Navit", "trying to extract language resource " + NavitTextTranslations.main_language);
    if (!extractRes(NavitTextTranslations.main_language,
            NAVIT_DATA_DIR + "/locale/" + NavitTextTranslations.main_language + "/LC_MESSAGES/navit.mo")) {
        Log.e("Navit", "Failed to extract language resource " + NavitTextTranslations.main_language);
    }

    // DEBUG - check if language file is on SDCARD -
    try {
        File debug_mo_src = new File("/sdcard/zanavi/debug/navit.mo");
        File debug_mo_dest = new File(
                NAVIT_DATA_DIR + "/locale/" + NavitTextTranslations.main_language + "/LC_MESSAGES/navit.mo");
        //* File navit_debug_dir = new File("/sdcard/zanavi/debug/");
        //* navit_debug_dir.mkdirs();
        copyFile(debug_mo_src, debug_mo_dest);
    } catch (Exception e) {
        e.printStackTrace();
    }
    // DEBUG - check if language file is on SDCARD -

    File navit_config_xml_file = new File(NAVIT_DATA_SHARE_DIR + "/navit.xml");
    if ((!navit_config_xml_file.exists()) || (NAVIT_ALWAYS_UNPACK_XMLFILE)) {
        xmlconfig_unpack_file = true;
        Log.e("Navit", "navit.xml does not exist, unpacking in any case");
    }

    my_display_density = "mdpi";
    // ldpi display (120 dpi)

    NavitGraphics.Global_want_dpi = Navit.metrics.densityDpi;
    NavitGraphics.Global_want_dpi_other = Navit.metrics.densityDpi;

    if (Navit.metrics.densityDpi <= 120) {
        my_display_density = "ldpi";
        if (xmlconfig_unpack_file) {
            if (!extractRes("navitldpi", NAVIT_DATA_SHARE_DIR + "/navit.xml")) {
                Log.e("Navit", "Failed to extract navit.xml for ldpi device(s)");
            }
        }
    }
    // mdpi display (160 dpi)
    else if ((Navit.metrics.densityDpi > 120) && (Navit.metrics.densityDpi <= 160)) {
        my_display_density = "mdpi";
        if (xmlconfig_unpack_file) {
            if (!extractRes("navitmdpi", NAVIT_DATA_SHARE_DIR + "/navit.xml")) {
                Log.e("Navit", "Failed to extract navit.xml for mdpi device(s)");
            }
        }
    }
    // hdpi display (240 dpi)
    else if ((Navit.metrics.densityDpi > 160) && (Navit.metrics.densityDpi < 320))
    //else if (Navit.metrics.densityDpi == 240)
    {
        my_display_density = "hdpi";
        if (xmlconfig_unpack_file) {
            if (!extractRes("navithdpi", NAVIT_DATA_SHARE_DIR + "/navit.xml")) {
                Log.e("Navit", "Failed to extract navit.xml for hdpi device(s)");
            }
        }
    }
    // xhdpi display (320 dpi)
    else if (Navit.metrics.densityDpi >= 320) {
        // set the map display DPI down. otherwise everything will be very small and unreadable
        // and performance will be very low
        if (p.PREF_shrink_on_high_dpi) {
            NavitGraphics.Global_want_dpi = NavitGraphics.Global_Scaled_DPI_normal;
        }
        NavitGraphics.Global_want_dpi_other = NavitGraphics.Global_Scaled_DPI_normal;

        Log.e("Navit", "found xhdpi device, this is not fully supported yet");
        Log.e("Navit", "using hdpi values for compatibility");
        my_display_density = "hdpi";
        if (xmlconfig_unpack_file) {
            if (!extractRes("navithdpi", NAVIT_DATA_SHARE_DIR + "/navit.xml")) {
                Log.e("Navit", "Failed to extract navit.xml for xhdpi device(s)");
            }
        }
    } else {
        /* default, meaning we just dont know what display this is */
        if (xmlconfig_unpack_file) {
            if (!extractRes("navitmdpi", NAVIT_DATA_SHARE_DIR + "/navit.xml")) {
                Log.e("Navit", "Failed to extract navit.xml (default version)");
            }
        }
    }
    // Debug.startMethodTracing("calc");

    int have_dpi = Navit.metrics.densityDpi;

    System.out.println("Global_want_dpi[001]=" + NavitGraphics.Global_want_dpi + ":" + Navit.metrics.densityDpi
            + ":" + NavitGraphics.Global_dpi_factor + ":" + NavitGraphics.Global_dpi_factor_better);

    if (NavitGraphics.Global_want_dpi == have_dpi) {
        NavitGraphics.Global_dpi_factor = 1;
        NavitGraphics.preview_coord_factor = 1;
    } else
    // this was missing??????!!!!!!!!!??????!!!!!!
    {
        NavitGraphics.Global_dpi_factor = ((float) NavitGraphics.Global_want_dpi / (float) have_dpi);
        NavitGraphics.preview_coord_factor = ((float) have_dpi / (float) NavitGraphics.Global_want_dpi);
    }

    System.out.println("Global_want_dpi[002]=" + NavitGraphics.Global_dpi_factor + ":"
            + NavitGraphics.preview_coord_factor);

    // gggggggggggggggggggggggggg new !!!!!!!!!!!!!!!!!!!!

    // --> dont use!! NavitMain(this, langu, android.os.Build.VERSION.SDK_INT);
    Log.e("Navit", "android.os.Build.VERSION.SDK_INT=" + Integer.valueOf(android.os.Build.VERSION.SDK));

    // -- report share dir back to C-code --
    //Message msg2 = new Message();
    //Bundle b2 = new Bundle();
    //b2.putInt("Callback", 82);
    //b2.putString("s", NAVIT_DATA_DIR + "/share/");
    //msg2.setData(b2);
    //N_NavitGraphics.callback_handler.sendMessage(msg2);
    // -- report share dir back to C-code --

    // -- report data dir back to C-code --
    //msg2 = new Message();
    //b2 = new Bundle();
    //b2.putInt("Callback", 84);
    //b2.putString("s", NAVIT_DATA_DIR + "/");
    //msg2.setData(b2);
    //N_NavitGraphics.callback_handler.sendMessage(msg2);
    // -- report share dir back to C-code --

    draw_osd_thread = new drawOSDThread();
    draw_osd_thread.start();

    cwthr = new CWorkerThread();
    cwthr.start();

    // --new--
    cwthr.StartMain(this, langu, Integer.valueOf(android.os.Build.VERSION.SDK), "" + Navit.metrics.densityDpi,
            NAVIT_DATA_DIR, NAVIT_DATA_SHARE_DIR);

    // --old--
    // NavitMain(this, langu, Integer.valueOf(android.os.Build.VERSION.SDK), my_display_density);
    // --old--
    // NavitActivity(3);

    // CAUTION: don't use android.os.Build.VERSION.SDK_INT if <uses-sdk android:minSdkVersion="3" />
    // You will get exception on all devices with Android 1.5 and lower
    // because Build.VERSION.SDK_INT is since SDK 4 (Donut 1.6)

    //      (see: http://developer.android.com/guide/appendix/api-levels.html)
    //      Platform Version               API Level
    //      =============================================
    //      Android 4.0.3               15
    //      Android 4.0, 4.0.1, 4.0.2      14
    //      Android 3.2                  13
    //      Android 3.1                  12
    //      Android 3.0                  11
    //      Android 2.3.3                10
    //      Android 2.3.1                 9
    //      Android 2.2                   8
    //      Android 2.1                   7
    //      Android 2.0.1                 6
    //      Android 2.0                   5
    //      Android 1.6                   4
    //      Android 1.5                   3
    //      Android 1.1                   2
    //      Android 1.0                   1

    Navit.mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

    //try
    //{
    //   Thread.sleep(2000);
    //}
    //catch (InterruptedException e)
    //{
    //}

    //getPrefs();
    //activatePrefs();

    // unpack some localized Strings
    // a test now, later we will unpack all needed strings for java, here at this point!!
    //String x = NavitGraphics.getLocalizedString("Austria");
    //Log.e("Navit", "x=" + x);
    Navit.show_mem_used();

    /*
     * GpsStatus.Listener listener = new GpsStatus.Listener()
     * {
     * public void onGpsStatusChanged(int event)
     * {
     * //System.out.println("xxxxx");
     * if (event == GpsStatus.GPS_EVENT_SATELLITE_STATUS)
     * {
     * }
     * }
     * };
     */

    try {
        Intent sintent = new Intent();
        sintent.setPackage("com.zoffcc.applications.zanavi_msg");
        sintent.setAction("com.zoffcc.applications.zanavi_msg.ZanaviCloudService");
        // ComponentName cname = startService(sintent);
        // Log.i("NavitPlugin", "start Service res=" + cname);
        // System.out.println("NavitPlugin:bind to Service");
        boolean res_bind = bindService(sintent, serviceConnection, Context.BIND_AUTO_CREATE);
        // Log.i("NavitPlugin", "bind to Service res=" + res_bind);
    } catch (Exception e) {
        e.printStackTrace();
    }

    // ------------- get all the flags for intro pages -------------
    // ------------- get all the flags for intro pages -------------
    // ------------- get all the flags for intro pages -------------
    try {
        intro_flag_indexmissing = false;
        allow_use_index_search();
        if (Navit_index_on_but_no_idx_files) {
            if (!NavitMapDownloader.download_active_start) {
                intro_flag_indexmissing = true;
            }
        }

    } catch (Exception e) {
    }

    try {
        intro_flag_nomaps = false;
        if (!have_maps_installed()) {
            if ((!NavitMapDownloader.download_active) && (!NavitMapDownloader.download_active_start)) {
                intro_flag_nomaps = true;
            }
        }
    } catch (Exception e) {
    }

    intro_flag_firststart = PreferenceManager.getDefaultSharedPreferences(this).getBoolean(PREF_KEY_FIRST_START,
            true);
    if (intro_flag_firststart) {
        intro_flag_update = false;
    }

    if (EasyPermissions.hasPermissions(this, perms)) {
        // have permissions!
        intro_flag_permissions = false;
    } else {
        // ask for permissions
        intro_flag_permissions = true;
    }
    // ------------- get all the flags for intro pages -------------
    // ------------- get all the flags for intro pages -------------
    // ------------- get all the flags for intro pages -------------

    // -------------- INTRO --------------
    // -------------- INTRO --------------
    // -------------- INTRO --------------

    intro_show_count = 0;

    //      // -------------- INTRO --------------
    //      // -------------- INTRO --------------
    //      // -------------- INTRO --------------

    // if (Navit.METHOD_DEBUG) Navit.my_func_name(1);
}

From source file:com.skytree.epubtest.BookViewActivity.java

public SkyLayout(Context context) {
    super(context);
    gestureScanner = new GestureDetector(this);
}