Форум программистов, компьютерный форум CyberForum.ru

Рисование поверх превью фотокамеры - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Проверка логина http://www.cyberforum.ru/android-dev/thread1515674.html
Привет! Давно читаю ваш форум, всегда находил решение своих проблем. Но вот сейчас надо сделать приложение на Android, и у меня ступор. :wall: Сам прогаю на Java, не очень давно, правда. По сайту искал - ничего такого не нашел, может не то в поиск забивал... Но вот сам вопрос: >есть приложение в котором пльзователь должен видеть свою страничку, на которой с бд будут отображатся его список,...
Программирование Android Приложение для прохождения теста Подскажите, пожалуйста, идеи для создания приложения теста. То есть идея есть, никак не могу найти как реализовать такое как в обычных тестах. Есть вопрос, есть 4 варианта ответов, один из них правильный. Не могу понять как это сделать, то ли через базу, хотя будут вопросы с просто картинкой http://www.cyberforum.ru/android-dev/thread1515668.html
Программирование Android Объект интерфейса
Наткнулся на интерфейс Parcelable, в нем есть подинтерфейс-Parcelable.Creator<T>. Студия требует:According to Parcelable interface documentaion, "Classes implementing the Parcelable interface must also have a static field called CREATOR, whiich is an object implementing the Parcelable.Creator interface. Вопрос собственно вот в чем:в java нельзя создавать объекты интерфейсов, можно создавать...
Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры" Программирование Android
Ребят, всем привет! накидайте какие-нить идеи по реализации ситуация такая есть таблицы - "списки_жанров", "фильмы", "режиссеры" мне нужно на актитиви с добавлением фильмов иметь такие поля поле для ввода названия_фильма дропдаун со списком имеющихся жанров дропдаун со списком имеющихся режиссеров то есть задача прикрепить определенный фильм к определенному режиссеру и жанру
Программирование Android Не играет фоновая музыка перед началом игры http://www.cyberforum.ru/android-dev/thread1515460.html
В моей игре,обычно в начале играла фоновая музыка.После того,как я добавил всякие разные активити,играть перестала.В коде всё правильно.что за баг не знаю
Программирование Android Использование фрагмента в качестве временного хранилища данных Коллеги,здравствуйте. Есть необходимость в создании временного хранилища для объектов(На время жизни приложения). Меня интересует, можно ли для этой цели использовать некий Fragment, который будет принимать данные от Intent и сохранять их в свои переменные экземпляра, чтобы в дальнейшем я мог обратиться к этому фрагменту и взять нужные мне данные? подробнее

Показать сообщение отдельно
Marat7777777
0 / 0 / 0
Регистрация: 15.08.2015
Сообщений: 2

Рисование поверх превью фотокамеры - Программирование Android

17.08.2015, 01:22. Просмотров 438. Ответов 0
Метки (Все метки)

Уважаемые знатоки, подскажите пожалуйста, что не так, почему один вид перекрывает другой, а не рисует поверх камеры?

У меня разметка имеет следующий вид:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/main_preview"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:contentDescription="@string/contentdescr" >
 
 <FrameLayout
      android:id="@+id/camera_preview"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:contentDescription="@string/contentdescr"
      android:measureAllChildren="false" >
 </FrameLayout>
 </RelativeLayout>
Далее имеется два класса, один для превью камеры, другой для рисования над ней кнопок и тп.
1 класс - превью камеры:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public class CameraClPrewiew extends SurfaceView implements SurfaceHolder.Callback {
 
        public SurfaceHolder mHolder;
        public Camera mCamera;
    
        public CameraClPrewiew (Context context, Camera camera) {
             super(context);
             mCamera=camera;
             mHolder=getHolder();
             mHolder.addCallback(this);
             mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
         }
 
        public void surfaceCreated(SurfaceHolder holder) {
            mCamera=Camera.open();
                try {
                    if (holder!=null)
                    mCamera.setPreviewDisplay(holder);                      
                } catch (IOException e) {
                    mCamera.stopPreview();
                    mCamera.release();
                }
                   mCamera.startPreview();
                }
 
 
 
          public void surfaceDestroyed(SurfaceHolder holder) {
                mCamera.stopPreview();
                mCamera.release();
          }
 
          public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
                    mCamera.startPreview();
        }
    }
2 класс для рисования:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
public class CameraClDraw extends SurfaceView implements Runnable {
        public AndroidGraphics g;
        private AssetManager asset;
        Bitmap framebuffer;
        Thread renderThread = null;
        SurfaceHolder mholder;
        volatile boolean running = false;
        Canvas canvas;
        Rect dstRect;
        
        public CameraClDraw (Context context, Bitmap framebuffer) {
                super(context); 
                this.framebuffer=framebuffer;
                g=new AndroidGraphics(asset, framebuffer);                  
                mholder = this.getHolder();                    
           }
        
        public void resume() {
            running = true;
            renderThread = new Thread(this);
            renderThread.start();
        }
 
        @Override
        public void run() {
            dstRect = new Rect();           
            while(running) {
            if(!mholder.getSurface().isValid())
            continue;
            canvas = mholder.lockCanvas();
            canvas.getClipBounds(dstRect);
            canvas.drawBitmap(framebuffer, null, dstRect, null);        
            mholder.unlockCanvasAndPost(canvas);
            }
            
        }   
        public void pause() {
            running = false;
            while(true) {
            try {
                renderThread.join();
                break;
                } catch (InterruptedException e) {
            }
        }
    }
}
и основная активность:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public class CameraCl extends Activity {
    
    public int windowh,windoww;
    private CameraClPrewiew cam;
    private CameraClDraw camDraw;
    public Camera camera;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);  
    requestWindowFeature(Window.FEATURE_NO_TITLE);
   getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
    boolean isLandscape = getResources().getConfiguration().orientation== Configuration.ORIENTATION_LANDSCAPE;
    windowh = getWindow().getWindowManager().getDefaultDisplay().getHeight();
    windoww = getWindow().getWindowManager().getDefaultDisplay().getWidth();
    int frameBufferWidth = isLandscape ? windoww : windowh;
    int frameBufferHeight = isLandscape ? windowh : windoww;
    Bitmap framebuffer = Bitmap.createBitmap(frameBufferWidth,frameBufferHeight, Config.RGB_565);
    setContentView(R.layout.activity_class_camera);
    cam=new CameraClPrewiew (this, camera); 
    camDraw = new CameraClDraw(this, framebuffer);
    FrameLayout camlayout=(FrameLayout)findViewById(R.id.camera_preview);       
    camlayout.addView(cam); // <---
    camlayout.addView(camDraw); // <---
    }
    @Override
    public void onResume() {
    super.onResume();
    camDraw.resume();
    }
    
    @Override
    public void onPause() {
    super.onPause();
    camDraw.pause();
    }
}
Так вот, у меня показывает либо камера, либо черный прямоугольник, но никак не получается рисовать поверх камеры, т.е. прямоугольник получается непрозрачный

Спасибо тем, кто откликнится!!!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru