Как заставить приложение отображать изображение в течение 5 секунд, прежде чем вернуться к камере?

Я делаю приложение для камеры, и в основном я хочу, чтобы изображение, сделанное пользователем, отображалось в течение 5 секунд, прежде чем вернуться в режим камеры.

Этот код заставляет его отображать предварительный просмотр. Но что бы я написал после него, чтобы оно задержалось на пять секунд? Спасибо!!

  @Override
public void onPictureTaken(byte[] data, Camera camera) {

  camera.startPreview();

}

person Tashad    schedule 20.08.2013    source источник


Ответы (2)


Создайте PreviewFragment, у которого есть ImageView, на котором вы бы отобразили Bitmap, созданный из массива байтов data. Загрузите фрагмент.

В PreviewFragment после загрузки фрагмента в методе onViewCreated() сделайте следующее:

@Override
        public void onViewCreated(View view, Bundle savedInstanceState) {
            // TODO Auto-generated method stub
              super.onViewCreated(view, savedInstanceState);
            view.getHandler().postDelayed(new Runnable(){

                @Override
                public void run() {
                    getActivity().getSupportFragmentManager().beginTransaction().remove(PreviewFragment.this).commit();
                }}, 5000);

        }

Убедитесь, что вы следуете рекомендациям по работе с большими растровыми изображениями, чтобы избежать OutOfMemoryException.

person Nikola Despotoski    schedule 20.08.2013

Вы можете определить это в потоке. запустите поток на 5 секунд, а затем остановитесь следующим образом:

private Thread mSplashThread;
private final static int SPLASH_SCREEN_TIME = 5000;

mSplashThread =  new Thread(){
            @Override
            public void run(){
                try {
                    synchronized(this){
                        // Wait given period of time or exit on touch
                        //Do your work
                        wait(SPLASH_SCREEN_TIME);
                    }
                }
                catch(InterruptedException ex){                    
                }

                // Run next activity
                Intent intent = new Intent();
                intent.setClass(sPlashScreen, xxx.class);
                intent.putExtra("showTheme", true);
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(intent);   
                finish();
            }
        };
person Sushil    schedule 20.08.2013