Как да накарам приложението да показва картина за 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