设为首页收藏本站

AnyChat技术支持论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
楼主: 博大的海
打印 上一主题 下一主题

android 版本兼容问题,不同手机,不同版本

[复制链接]

249

主题

2967

帖子

9101

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9101
21#
发表于 2013-7-29 11:41:28 | 只看该作者
您好,如果Load so文件出现问题,则是无法登录系统的。
回复 支持 反对

使用道具 举报

9

主题

82

帖子

233

积分

中级会员

Rank: 3Rank: 3

积分
233
22#
 楼主| 发表于 2013-7-29 13:41:08 | 只看该作者
在AnyChatCameraHelper.java添加日志大部分时候不打印,偶尔打印出来日志,还可以获得头像的。同一份代码。
回复 支持 反对

使用道具 举报

249

主题

2967

帖子

9101

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9101
23#
发表于 2013-7-29 13:58:03 | 只看该作者
您好,请问您是在哪些地方添加的Log输出?
回复 支持 反对

使用道具 举报

9

主题

82

帖子

233

积分

中级会员

Rank: 3Rank: 3

积分
233
24#
 楼主| 发表于 2013-7-29 14:00:26 | 只看该作者
package com.bairuitech.anychat;


import java.util.List;

import com.soufun.agent.utils.UtilsLog;

import android.graphics.ImageFormat;
import android.hardware.Camera;
import android.hardware.Camera.CameraInfo;
import android.hardware.Camera.Size;
import android.util.Log;
import android.view.SurfaceHolder;


// AnyChat Camera��װ�࣬ʵ�ֱ�����Ƶ�ɼ�
public class AnyChatCameraHelper implements SurfaceHolder.Callback{
        private final static String TAG = "ANYCHAT";
        private Camera mCamera =null;
        private boolean bIfPreview = false;
        private boolean bNeedCapture = false;
        private int iCurrentCameraId = 0;
        private SurfaceHolder currentHolder = null;
       
        public final int CAMERA_FACING_BACK = 0;
        public final int CAMERA_FACING_FRONT = 1;
       
        // ��ʼ���������surfaceCreated�е���
        private void initCamera()
        {
                UtilsLog.log("hhhh", "==========");
                if (null == mCamera)
                        return;
                try {
                        if (bIfPreview) {
                                mCamera.stopPreview();// stopCamera();
                                mCamera.setPreviewCallback(null);
                                UtilsLog.log("hhhh", "==========");
                        }
                        /* Camera Service settings */
                        Camera.Parameters parameters = mCamera.getParameters();
                       
                        // ��ȡcamera֧�ֵ���ز����ж��Ƿ��������
                        List<Size> previewSizes = mCamera.getParameters().getSupportedPreviewSizes();

                        // ��ȡ��ǰ���õķֱ��ʲ���
                        int iSettingsWidth = AnyChatCoreSDK.GetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_WIDTHCTRL);
                        int iSettingsHeight = AnyChatCoreSDK.GetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_HEIGHTCTRL);
                        boolean bSetPreviewSize = false;
                        for (int i = 0; i < previewSizes.size(); i++) {
                                Size s = previewSizes.get(i);
                                UtilsLog.log("hhhh", "==========");
                                if(s.width == iSettingsWidth && s.height == iSettingsHeight) {
                                        bSetPreviewSize = true;
                                        parameters.setPreviewSize(iSettingsWidth, iSettingsHeight);
                                        UtilsLog.log("hhhh", "==========");
                                        break;
                                }
                        }
                        parameters.setPreviewFrameRate(25);
                        // ָ���ķֱ��ʲ�֧��ʱ����Ĭ�ϵķֱ������
                        if(!bSetPreviewSize)
                                parameters.setPreviewSize(320, 240);
                       
                        // ������Ƶ��ݸ�ʽ
                        parameters.setPreviewFormat(ImageFormat.NV21);
                        // ����������Ч
                        try {
                                mCamera.setParameters(parameters);
                                UtilsLog.log("hhhh", "==========");
                        } catch(Exception e){
                               
                        }
                        // ������Ƶ����ص�����ͨ��AnyChat���ⲿ��Ƶ����ӿڴ���AnyChat�ں˽��д���
                        mCamera.setPreviewCallback(new Camera.PreviewCallback() {
                                @Override
                                public void onPreviewFrame(byte[] data, Camera camera) {
                                        if(data.length !=0 && bNeedCapture)
                                                 AnyChatCoreSDK.InputVideoData(data, data.length, 0);
                                        UtilsLog.log("hhhh", "==========");
                                }
                        });
                        mCamera.startPreview(); // ��Ԥ������
                        bIfPreview = true;

                        // ��ȡ���ú����ز���
                        int pixfmt = -1;
                        if(mCamera.getParameters().getPreviewFormat() == ImageFormat.NV21)
                                pixfmt = AnyChatDefine.BRAC_PIX_FMT_NV21;
                        else if(mCamera.getParameters().getPreviewFormat() == ImageFormat.YV12)
                                pixfmt = AnyChatDefine.BRAC_PIX_FMT_YV12;
                        else if(mCamera.getParameters().getPreviewFormat() == ImageFormat.NV16)
                                pixfmt = AnyChatDefine.BRAC_PIX_FMT_NV16;
                        else if(mCamera.getParameters().getPreviewFormat() == ImageFormat.YUY2)
                                pixfmt = AnyChatDefine.BRAC_PIX_FMT_YUY2;
                        else if(mCamera.getParameters().getPreviewFormat() == ImageFormat.RGB_565)
                                pixfmt = AnyChatDefine.BRAC_PIX_FMT_RGB565;
                        else
                                Log.e(TAG, "unknow camera privew format:" + mCamera.getParameters().getPreviewFormat());
                       
                        Camera.Size previewSize = mCamera.getParameters().getPreviewSize();
                        AnyChatCoreSDK.SetSDKOptionInt(AnyChatDefine.BRAC_SO_CORESDK_EXTVIDEOINPUT, 1);
                        AnyChatCoreSDK.SetInputVideoFormat(pixfmt, previewSize.width, previewSize.height, mCamera.getParameters().getPreviewFrameRate(), 0);
                } catch (Exception e) {
                        UtilsLog.log("hhhh", "==========");
                        e.printStackTrace();
                }       
        }
       
        // ����ͷ�ɼ�����
        public void CaptureControl(boolean bCapture) {
                bNeedCapture = bCapture;
        }

        // ��ȡϵͳ������ͷ������
        public int GetCameraNumber() {
                try {
                        return Camera.getNumberOfCameras();
                } catch (Exception ex) {
                        ex.printStackTrace();
                        return 0;
                }
        }
        // �Զ��Խ�
        public void CameraAutoFocus() {
                if(mCamera == null || !bIfPreview)
                        return;
                try {               
                        mCamera.autoFocus(null);
                } catch (Exception ex) {
                        ex.printStackTrace();
                }
        }
       
        // �л�����ͷ
        public void SwitchCamera() {
                try {
                        if(Camera.getNumberOfCameras() == 1 || currentHolder == null)
                                return;
                        iCurrentCameraId = (iCurrentCameraId==0) ? 1 : 0;
                        if(null != mCamera)        {
                                mCamera.stopPreview();
                                mCamera.setPreviewCallback(null);
                                bIfPreview = false;
                                mCamera.release();
                                mCamera = null;     
                        }

                        mCamera = Camera.open(iCurrentCameraId);
                        mCamera.setPreviewDisplay(currentHolder);
                        initCamera();
                } catch (Exception ex) {
                        ex.printStackTrace();
                         if(null != mCamera) {
                                 mCamera.release();
                                 mCamera = null;     
                         }
                }
        }
       
        // ѡ������ͷ
        public void SelectVideoCapture(int facing) {
                for (int i = 0; i < Camera.getNumberOfCameras(); i++)
                {
                        CameraInfo info = new CameraInfo();
                        Camera.getCameraInfo(i, info);
                        if (info.facing == facing) {
                                iCurrentCameraId = i;
                                break;
                        }
                }
        }
       
        @Override
        public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
               
        }

        @Override
        public void surfaceCreated(SurfaceHolder holder) {
                try {
                        UtilsLog.log("hhhh", "==========");
                        mCamera = Camera.open(iCurrentCameraId);
                        currentHolder = holder;
                        mCamera.setPreviewDisplay(holder);//set the surface to be used for live preview
                        initCamera();
                 } catch (Exception ex) {
                         UtilsLog.log("hhhh", "==========");
                         ex.printStackTrace();
                         if(null != mCamera) {
                                 mCamera.release();
                                 mCamera = null;     
                         }
                }
        }

        @Override
        public void surfaceDestroyed(SurfaceHolder holder) {
                if(null != mCamera)        {
                        try {
                                mCamera.stopPreview();
                                mCamera.setPreviewCallback(null);
                                bIfPreview = false;
                                mCamera.release();
                                mCamera = null;   
                        } catch (Exception ex) {
                                mCamera = null;
                                bIfPreview = false;
                        }
                }
                currentHolder = null;
        }

       
       

}
回复 支持 反对

使用道具 举报

9

主题

82

帖子

233

积分

中级会员

Rank: 3Rank: 3

积分
233
25#
 楼主| 发表于 2013-7-29 14:00:44 | 只看该作者
能添加的地方都添加了。
回复 支持 反对

使用道具 举报

5

主题

1269

帖子

3677

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3677
26#
发表于 2013-7-29 14:17:22 | 只看该作者
建议您在surfaceview的三个生命周期都打上log,InitCamera部分添加的日志不同地方可以用不同的TAG或者CONTENT标示,不要全部都是 UtilsLog.log("hhhh", "==========");
回复 支持 反对

使用道具 举报

5

主题

1269

帖子

3677

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3677
27#
发表于 2013-7-29 14:24:03 | 只看该作者
出现打不开摄像头的时候,看日志在InitCamera中走到那一步
回复 支持 反对

使用道具 举报

9

主题

82

帖子

233

积分

中级会员

Rank: 3Rank: 3

积分
233
28#
 楼主| 发表于 2013-7-29 15:02:59 | 只看该作者
package com.bairuitech.anychat;


import java.util.List;

import com.soufun.agent.utils.UtilsLog;

import android.graphics.ImageFormat;
import android.hardware.Camera;
import android.hardware.Camera.CameraInfo;
import android.hardware.Camera.Size;
import android.util.Log;
import android.view.SurfaceHolder;


// AnyChat Camera��װ�࣬ʵ�ֱ�����Ƶ�ɼ�
public class AnyChatCameraHelper implements SurfaceHolder.Callback{
        private final static String TAG = "ANYCHAT";
        private Camera mCamera =null;
        private boolean bIfPreview = false;
        private boolean bNeedCapture = false;
        private int iCurrentCameraId = 0;
        private SurfaceHolder currentHolder = null;
       
        public final int CAMERA_FACING_BACK = 0;
        public final int CAMERA_FACING_FRONT = 1;
       
        // ��ʼ���������surfaceCreated�е���
        private void initCamera()
        {
                Log.e("zhaoxiangji", "=====31====line====");
                if (null == mCamera)
                        return;
                try {
                        if (bIfPreview) {
                                mCamera.stopPreview();// stopCamera();
                                mCamera.setPreviewCallback(null);
                                Log.e("zhaoxiangji", "=====38==line=====");
                        }
                        /* Camera Service settings */
                        Camera.Parameters parameters = mCamera.getParameters();
                       
                        // ��ȡcamera֧�ֵ���ز����ж��Ƿ��������
                        List<Size> previewSizes = mCamera.getParameters().getSupportedPreviewSizes();

                        // ��ȡ��ǰ���õķֱ��ʲ���
                        int iSettingsWidth = AnyChatCoreSDK.GetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_WIDTHCTRL);
                        int iSettingsHeight = AnyChatCoreSDK.GetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_HEIGHTCTRL);
                        boolean bSetPreviewSize = false;
                        for (int i = 0; i < previewSizes.size(); i++) {
                                Size s = previewSizes.get(i);
                                Log.e("zhaoxiangji", "=====52==line=====");
                                if(s.width == iSettingsWidth && s.height == iSettingsHeight) {
                                        bSetPreviewSize = true;
                                        parameters.setPreviewSize(iSettingsWidth, iSettingsHeight);
                                        Log.e("zhaoxiangji", "=====56==line=====");
                                        break;
                                }
                        }
                        parameters.setPreviewFrameRate(25);
                        // ָ���ķֱ��ʲ�֧��ʱ����Ĭ�ϵķֱ������
                        if(!bSetPreviewSize)
                                parameters.setPreviewSize(320, 240);
                       
                        // ������Ƶ��ݸ�ʽ
                        parameters.setPreviewFormat(ImageFormat.NV21);
                        // ����������Ч
                        try {
                                mCamera.setParameters(parameters);
                                Log.e("zhaoxiangji", "=====70==line=====");
                        } catch(Exception e){
                               
                        }
                        // ������Ƶ����ص�����ͨ��AnyChat���ⲿ��Ƶ����ӿڴ���AnyChat�ں˽��д���
                        mCamera.setPreviewCallback(new Camera.PreviewCallback() {
                                @Override
                                public void onPreviewFrame(byte[] data, Camera camera) {
                                        if(data.length !=0 && bNeedCapture)
                                                 AnyChatCoreSDK.InputVideoData(data, data.length, 0);
                                        Log.e("zhaoxiangji", "=====80==line=====");
                                }
                        });
                        mCamera.startPreview(); // ��Ԥ������
                        bIfPreview = true;

                        // ��ȡ���ú����ز���
                        int pixfmt = -1;
                        if(mCamera.getParameters().getPreviewFormat() == ImageFormat.NV21)
                                pixfmt = AnyChatDefine.BRAC_PIX_FMT_NV21;
                        else if(mCamera.getParameters().getPreviewFormat() == ImageFormat.YV12)
                                pixfmt = AnyChatDefine.BRAC_PIX_FMT_YV12;
                        else if(mCamera.getParameters().getPreviewFormat() == ImageFormat.NV16)
                                pixfmt = AnyChatDefine.BRAC_PIX_FMT_NV16;
                        else if(mCamera.getParameters().getPreviewFormat() == ImageFormat.YUY2)
                                pixfmt = AnyChatDefine.BRAC_PIX_FMT_YUY2;
                        else if(mCamera.getParameters().getPreviewFormat() == ImageFormat.RGB_565)
                                pixfmt = AnyChatDefine.BRAC_PIX_FMT_RGB565;
                        else
                                Log.e(TAG, "unknow camera privew format:" + mCamera.getParameters().getPreviewFormat());
                       
                        Camera.Size previewSize = mCamera.getParameters().getPreviewSize();
                        AnyChatCoreSDK.SetSDKOptionInt(AnyChatDefine.BRAC_SO_CORESDK_EXTVIDEOINPUT, 1);
                        AnyChatCoreSDK.SetInputVideoFormat(pixfmt, previewSize.width, previewSize.height, mCamera.getParameters().getPreviewFrameRate(), 0);
                } catch (Exception e) {
                        Log.e("zhaoxiangji", "=====105==line=====");
                        e.printStackTrace();
                }       
        }
       
        // ����ͷ�ɼ�����
        public void CaptureControl(boolean bCapture) {
                bNeedCapture = bCapture;
        }

        // ��ȡϵͳ������ͷ������
        public int GetCameraNumber() {
                try {
                        return Camera.getNumberOfCameras();
                } catch (Exception ex) {
                        ex.printStackTrace();
                        return 0;
                }
        }
        // �Զ��Խ�
        public void CameraAutoFocus() {
                if(mCamera == null || !bIfPreview)
                        return;
                try {               
                        mCamera.autoFocus(null);
                } catch (Exception ex) {
                        ex.printStackTrace();
                }
        }
       
        // �л�����ͷ
        public void SwitchCamera() {
                try {
                        if(Camera.getNumberOfCameras() == 1 || currentHolder == null)
                                return;
                        iCurrentCameraId = (iCurrentCameraId==0) ? 1 : 0;
                        if(null != mCamera)        {
                                mCamera.stopPreview();
                                mCamera.setPreviewCallback(null);
                                bIfPreview = false;
                                mCamera.release();
                                mCamera = null;     
                        }

                        mCamera = Camera.open(iCurrentCameraId);
                        mCamera.setPreviewDisplay(currentHolder);
                        initCamera();
                } catch (Exception ex) {
                        ex.printStackTrace();
                         if(null != mCamera) {
                                 mCamera.release();
                                 mCamera = null;     
                         }
                }
        }
       
        // ѡ������ͷ
        public void SelectVideoCapture(int facing) {
                for (int i = 0; i < Camera.getNumberOfCameras(); i++)
                {
                        CameraInfo info = new CameraInfo();
                        Camera.getCameraInfo(i, info);
                        if (info.facing == facing) {
                                iCurrentCameraId = i;
                                break;
                        }
                }
        }
       
        @Override
        public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
                Log.e("zhaoxiangji", "=====176==line=====");
        }

        @Override
        public void surfaceCreated(SurfaceHolder holder) {
                try {
                        Log.e("zhaoxiangji", "=====182==line=====");
                        mCamera = Camera.open(iCurrentCameraId);
                        currentHolder = holder;
                        mCamera.setPreviewDisplay(holder);//set the surface to be used for live preview
                        initCamera();
                 } catch (Exception ex) {
                                Log.e("zhaoxiangji", "=====188==line=====");
                         ex.printStackTrace();
                         if(null != mCamera) {
                                 mCamera.release();
                                 mCamera = null;     
                         }
                }
        }

        @Override
        public void surfaceDestroyed(SurfaceHolder holder) {
                if(null != mCamera)        {
                        try {
                                Log.e("zhaoxiangji", "=====201==line=====");
                                mCamera.stopPreview();
                                mCamera.setPreviewCallback(null);
                                bIfPreview = false;
                                mCamera.release();
                                mCamera = null;   
                        } catch (Exception ex) {
                                Log.e("zhaoxiangji", "=====208==line=====");
                                mCamera = null;
                                bIfPreview = false;
                        }
                }
                currentHolder = null;
        }

       
       

}

该打的地方都打印了。AnyChatCameraHelper 在日志都一个没打印出来。其他的日志都是可以打印的。
正常情况下日志:
07-29 15:00:56.729: E/zhaoxiangji(9864): =====182==line=====
07-29 15:00:58.649: E/zhaoxiangji(9864): =====31====line====
07-29 15:00:58.789: E/zhaoxiangji(9864): =====52==line=====
07-29 15:00:58.789: E/zhaoxiangji(9864): =====56==line=====
07-29 15:00:58.809: E/zhaoxiangji(9864): =====70==line=====
07-29 15:00:59.429: E/zhaoxiangji(9864): =====176==line=====
不正常情况下,一个也打不出来。
麻烦提供下思路。
回复 支持 反对

使用道具 举报

5

主题

1269

帖子

3677

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3677
29#
发表于 2013-7-29 15:24:22 | 只看该作者
不正常情况下面,surfaceCreated中的日志都没有打印出来?不正常的情况怎么样的,直接就跳出了?
回复 支持 反对

使用道具 举报

9

主题

82

帖子

233

积分

中级会员

Rank: 3Rank: 3

积分
233
30#
 楼主| 发表于 2013-7-29 15:30:47 | 只看该作者
日志都没打印的。没有跳出,只是黑屏,不展示。
另外你们的sdk兼容性测试,是针对机型的还是android版本的,我们测试机好多都是黑屏幕,
比如:三星s5660,酷派系列N916。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|AnyChat ( 粤ICP备13022410号-1 )  

GMT+8, 2024-9-27 23:27 , Processed in 0.131564 second(s), 20 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表