AnyChat技术支持论坛

标题: android 版本兼容问题,不同手机,不同版本 [打印本页]

作者: 博大的海    时间: 2013-7-26 13:04
标题: android 版本兼容问题,不同手机,不同版本
您好,官方demo运行在三星手机,手机型号:GT-S5660,android版本号:2.3.7 内核版本:2.6.35.7.....结果采集不出来图像,整个就是黑屏或者是
07-26 12:58:36.219: I/ANYCHAT(4273): 12:58:36(227)        ---------------------------BRAnyChatCore ActiveCallLog---------------------------
07-26 12:58:36.229: I/ANYCHAT(4273): 12:58:36(235)        Load SDK Success, dwFuncMode:0x8a,V4.7(Build Time:Jun  4 2013 02:15:50)
07-26 12:58:36.229: I/ANYCHAT(4273): 12:58:36(235)        Android OS SDK Version:10, Support ARMv7:0, Support Neon:0
07-26 12:58:36.239: I/ANYCHAT(4273): 12:58:36(248)        Load libmediautil_v6.so success!(V4.7 Build Time:Jun  4 2013 02:17:17)
07-26 12:58:36.239: I/ANYCHAT(4273): 12:58:36(254)        Load libmediashow_2.3.so success!(V4.7 Build Time:Jun  4 2013 02:16:31)
07-26 12:58:36.249: I/ANYCHAT(4273): 12:58:36(262)        Load libmediacore_2.3.so success!(V4.7 Build Time:Jun  4 2013 02:16:54)
07-26 12:58:36.259: I/ANYCHAT(4273): 12:58:36(270)        CPU:797.90 MIPS, Hardware:GT-S5660 Board
07-26 12:58:53.939: I/ANYCHAT(4273): 12:58:53(952)        Invoke        BRAC_Connect(demo.anychat.cn,8906)=0
07-26 12:58:53.939: I/ANYCHAT(4273): 12:58:53(953)        Invoke        LoginServer(username=ggggggg )
07-26 12:58:53.979: I/ANYCHAT(4273): 12:58:53(985)        CheckClientSocketLink         Connect(ip=121.199.51.198,port=8906)
07-26 12:58:54.079: I/ANYCHAT(4273): 12:58:54(88)        Server version: V4.8(Build Time:2013-07-25 10:57:33)
07-26 12:58:54.089: I/ANYCHAT(4273): 12:58:54(104)        Message        OnConnect(bSuccess:1, errorcode=0)
07-26 12:58:54.379: I/ANYCHAT(4273): 12:58:54(384)        Message        OnLoginSystem(userid=-701,errorcode=0,username=ggggggg ), msg deliver worked(0)
07-26 12:58:54.419: I/ANYCHAT(4273): 12:58:54(428)        Connection to streaming media server successfully!(udp delay:21ms)
07-26 12:58:54.469: I/ANYCHAT(4273): 12:58:54(475)        Apply video parameter:320x240, bitrate:0, quality:3, gop:40, fps:10, preset:3, codec:0
07-26 12:58:54.469: I/ANYCHAT(4273): 12:58:54(476)        Invoke        BRAC_SetSDKOption(BRAC_SO_NETWORK_P2PPOLITIC=1)
07-26 12:58:54.469: I/ANYCHAT(4273): 12:58:54(477)        Invoke        SetSDKOption(BRAC_SO_AUDIO_ECHOCTRL,1)
07-26 12:58:54.469: I/ANYCHAT(4273): 12:58:54(477)        Invoke        BRAC_SetSDKOption(BRAC_SO_STREAM_SMOOTHPLAYMODE=0)
07-26 12:58:56.469: I/ANYCHAT(4273): 12:58:56(478)        Invoke        EnterRoom(roomid=1)
07-26 12:58:56.519: I/ANYCHAT(4273): 12:58:56(526)        Message        OnEnterRoom(roomid=1,errorcode=0,siteindex=1)
07-26 12:58:56.519: I/ANYCHAT(4273): 12:58:56(526)        Audio Playback Device Init(0, 1, 16000, 16), Default Playback Driver
07-26 12:58:56.519: I/ANYCHAT(4273): 12:58:56(527)        Message        OnReceiveOnlineUser(count=2,roomid=1)
07-26 12:58:56.519: D/ANYCHAT(4273): InitAudioPlayer, profile: 1
07-26 12:58:56.529: D/ANYCHAT(4273): mMinPlayBufSize = 1740
07-26 12:58:56.539: D/ANYCHAT(4273): audio play....
07-26 12:59:03.449: I/ANYCHAT(4273): 12:59:03(455)        Message        OnUserEnterRoom(userid=-700,nickname=ffcffff,siteindex=2)
07-26 12:59:03.729: I/ANYCHAT(4273): 12:59:03(740)        Message        OnP2PConnectState(userid=-700, state=1)
07-26 12:59:04.089: I/ANYCHAT(4273): 12:59:04(100)        Message        OnP2PConnectState(userid=-700, state=3)
07-26 12:59:06.439: D/PhoneWindow(4273): couldn't save which view has focus because the focused view android.widget.EditText@4052f508 has no id.
07-26 12:59:06.589: D/SensorManager(4273): ====>>>>>Num Sensor: 1
07-26 12:59:06.589: D/SensorManager(4273): ====>>>>>Num Sensor: 2
07-26 12:59:06.589: D/SensorManager(4273): ====>>>>>Num Sensor: 3
07-26 12:59:06.589: D/SensorManager(4273): ====>>>>>Num Sensor: 4
07-26 12:59:06.589: D/SensorManager(4273): ====>>>>>Num Sensor: 5
07-26 12:59:06.589: D/SensorManager(4273): ====>>>>>Num Sensor: 6
07-26 12:59:06.599: D/SensorManager(4273): ====>>>>>Num Sensor: 0
07-26 12:59:06.599: E/SensorManager(4273): registerListener :: handle = 0  name= BMA220 delay= 200000 Listener= android.view.OrientationEventListener$SensorEventListenerImpl@40596460
07-26 12:59:06.619: E/SensorManager(4273): =======>>>Sensor Thread RUNNING <<<========
07-26 12:59:06.619: E/SensorManager(4273): reg :: handle = 0
07-26 12:59:06.619: E/SensorManager(4273): registerListener :: handle = 0  name= BMA220 delay= 200000 Listener= com.bairuitech.anychat.AnyChatSensorHelper@40594dc0
07-26 12:59:06.619: E/SensorManager(4273): reg :: handle = 0
07-26 12:59:06.809: I/ANYCHAT(4273): 12:59:06(817)        Invoke        UserCameraControl(userid=-700,bOpen=1)
07-26 12:59:06.809: I/ANYCHAT(4273): 12:59:06(818)        Invoke        UserSpeakControl(userid=-700,bOpen=1)
07-26 12:59:06.809: E/VideoActivity(4273): ======[com.bairuitech.demo.VideoActivity][191][InitialLayout]=======GetCameraNumber() ==1
07-26 12:59:06.809: I/ANYCHAT(4273): 12:59:06(822)        Invoke        UserCameraControl(userid=-1,bOpen=1)
07-26 12:59:06.809: I/ANYCHAT(4273): 12:59:06(823)        Invoke        UserSpeakControl(userid=-1,bOpen=1)
07-26 12:59:06.849: D/ANYCHAT(4273): InitAudioRecorder, profile: 1
07-26 12:59:06.859: I/ANYCHAT(4273): 12:59:06(870)        Audio Init, error:0, device:-1, 1, 16000, 16, capmode:0
07-26 12:59:09.639: I/ANYCHAT(4273): 12:59:09(648)        userid(-700) video decode delay:31ms

作者: 博大的海    时间: 2013-7-26 13:05
忘记上图了。

错误.jpg (24.3 KB, 下载次数: 3578)

错误.jpg

作者: admin    时间: 2013-7-26 13:55
您好,请问【设置】里面,视频采集驱动、视频显示驱动,是否均为“Java驱动”?
作者: admin    时间: 2013-7-26 14:36
您好,可尝试将libs目录下的libmediacore_2.3.so文件删除,然后再测试看结果如何?您目前所遇到的问题比较特殊,应该是该手机的内核和原生的Android内核有较大的差异所导致的。
作者: 博大的海    时间: 2013-7-26 14:45
这是你们官方的demo,均为“Java驱动"。另外libmediacore_2.3.so文件删除后还不起作用。
作者: admin    时间: 2013-7-26 14:52
删除libmediacore_2.3.so之后,再把logcat中的日志帖上来我们分析一下,谢谢。
作者: 博大的海    时间: 2013-7-26 15:09
07-26 15:10:15.339: I/ANYCHAT(6799): 15:10:15(342)        ---------------------------BRAnyChatCore ActiveCallLog---------------------------
07-26 15:10:15.339: I/ANYCHAT(6799): 15:10:15(342)        Load SDK Success, dwFuncMode:0x8a,V4.7(Build Time:Jun  4 2013 02:15:50)
07-26 15:10:15.339: I/ANYCHAT(6799): 15:10:15(342)        Android OS SDK Version:10, Support ARMv7:0, Support Neon:0
07-26 15:10:15.349: I/ANYCHAT(6799): 15:10:15(354)        Load libmediautil_v6.so success!(V4.7 Build Time:Jun  4 2013 02:17:17)
07-26 15:10:15.359: I/ANYCHAT(6799): 15:10:15(362)        Load libmediashow_2.3.so success!(V4.7 Build Time:Jun  4 2013 02:16:31)
07-26 15:10:15.359: I/ANYCHAT(6799): 15:10:15(369)        Cannot load library: load_library[1105]: Library '/data/data/com.bairuitech.demo/lib/libmediacore_2.3.so' not found
07-26 15:10:15.369: I/ANYCHAT(6799): 15:10:15(372)        Load libmediacore.so success!(V4.7 Build Time:Jun  4 2013 02:16:40)
07-26 15:10:15.369: I/ANYCHAT(6799): 15:10:15(379)        CPU:797.90 MIPS, Hardware:GT-S5660 Board
07-26 15:10:19.119: I/ANYCHAT(6799): 15:10:19(127)        Invoke        BRAC_Connect(demo.anychat.cn,8906)=0
07-26 15:10:19.119: I/ANYCHAT(6799): 15:10:19(128)        Invoke        LoginServer(username=gggggg)
07-26 15:10:29.179: I/ANYCHAT(6799): 15:10:29(186)        CheckClientSocketLink         Connect(ip=121.199.51.198,port=8906)
07-26 15:10:29.529: I/ANYCHAT(6799): 15:10:29(537)        Server version: V4.8(Build Time:2013-07-25 10:57:33)
07-26 15:10:29.539: I/ANYCHAT(6799): 15:10:29(543)        Message        OnConnect(bSuccess:1, errorcode=0)
07-26 15:10:29.839: I/ANYCHAT(6799): 15:10:29(849)        Message        OnLoginSystem(userid=-818,errorcode=0,username=gggggg), msg deliver worked(0)
07-26 15:10:29.889: I/ANYCHAT(6799): 15:10:29(895)        Connection to streaming media server successfully!(udp delay:21ms)
07-26 15:10:29.959: I/ANYCHAT(6799): 15:10:29(963)        Apply video parameter:320x240, bitrate:0, quality:3, gop:40, fps:10, preset:3, codec:0
07-26 15:10:29.959: I/ANYCHAT(6799): 15:10:29(964)        Invoke        BRAC_SetSDKOption(BRAC_SO_NETWORK_P2PPOLITIC=1)
07-26 15:10:29.959: I/ANYCHAT(6799): 15:10:29(964)        Invoke        SetSDKOption(BRAC_SO_AUDIO_ECHOCTRL,1)
07-26 15:10:29.959: I/ANYCHAT(6799): 15:10:29(964)        Invoke        BRAC_SetSDKOption(BRAC_SO_STREAM_SMOOTHPLAYMODE=0)
07-26 15:10:31.819: I/ANYCHAT(6799): 15:10:31(826)        Invoke        EnterRoom(roomid=1)
07-26 15:10:31.889: I/ANYCHAT(6799): 15:10:31(894)        Message        OnEnterRoom(roomid=1,errorcode=0,siteindex=1)
07-26 15:10:31.889: I/ANYCHAT(6799): 15:10:31(895)        Audio Playback Device Init(0, 1, 16000, 16), Default Playback Driver
07-26 15:10:31.889: I/ANYCHAT(6799): 15:10:31(895)        Message        OnReceiveOnlineUser(count=2,roomid=1)
07-26 15:10:31.909: D/ANYCHAT(6799): InitAudioPlayer, profile: 1
07-26 15:10:31.929: D/ANYCHAT(6799): mMinPlayBufSize = 1740
07-26 15:10:31.949: D/ANYCHAT(6799): audio play....
07-26 15:10:32.679: I/ANYCHAT(6799): 15:10:32(685)        Message        OnP2PConnectState(userid=-812, state=2)
07-26 15:10:32.859: I/ANYCHAT(6799): 15:10:32(867)        Message        OnP2PConnectState(userid=-812, state=3)
07-26 15:10:33.679: D/PhoneWindow(6799): couldn't save which view has focus because the focused view android.widget.EditText@4051c108 has no id.
07-26 15:10:33.809: D/SensorManager(6799): ====>>>>>Num Sensor: 1
07-26 15:10:33.809: D/SensorManager(6799): ====>>>>>Num Sensor: 2
07-26 15:10:33.809: D/SensorManager(6799): ====>>>>>Num Sensor: 3
07-26 15:10:33.809: D/SensorManager(6799): ====>>>>>Num Sensor: 4
07-26 15:10:33.809: D/SensorManager(6799): ====>>>>>Num Sensor: 5
07-26 15:10:33.809: D/SensorManager(6799): ====>>>>>Num Sensor: 6
07-26 15:10:33.809: D/SensorManager(6799): ====>>>>>Num Sensor: 0
07-26 15:10:33.829: E/SensorManager(6799): registerListener :: handle = 0  name= BMA220 delay= 200000 Listener= android.view.OrientationEventListener$SensorEventListenerImpl@40550038
07-26 15:10:33.859: E/SensorManager(6799): =======>>>Sensor Thread RUNNING <<<========
07-26 15:10:33.869: E/SensorManager(6799): reg :: handle = 0
07-26 15:10:33.869: E/SensorManager(6799): registerListener :: handle = 0  name= BMA220 delay= 200000 Listener= com.bairuitech.anychat.AnyChatSensorHelper@4054e998
07-26 15:10:33.869: E/SensorManager(6799): reg :: handle = 0
07-26 15:10:34.039: I/ANYCHAT(6799): 15:10:34(42)        Invoke        UserCameraControl(userid=-812,bOpen=1)
07-26 15:10:34.039: I/ANYCHAT(6799): 15:10:34(43)        Invoke        UserSpeakControl(userid=-812,bOpen=1)
07-26 15:10:34.039: E/VideoActivity(6799): ======[com.bairuitech.demo.VideoActivity][191][InitialLayout]=======GetCameraNumber() ==1
07-26 15:10:34.039: I/ANYCHAT(6799): 15:10:34(48)        Invoke        UserCameraControl(userid=-1,bOpen=1)
07-26 15:10:34.039: I/ANYCHAT(6799): 15:10:34(48)        Invoke        UserSpeakControl(userid=-1,bOpen=1)
07-26 15:10:34.079: D/ANYCHAT(6799): InitAudioRecorder, profile: 1
07-26 15:10:34.089: I/ANYCHAT(6799): 15:10:34(92)        Audio Init, error:0, device:-1, 1, 16000, 16, capmode:0
07-26 15:10:39.979: I/ANYCHAT(6799): 15:10:39(986)        userid(-812) video decode delay:774ms
07-26 15:10:44.699: D/PhoneWindow(6852): couldn't save which view has focus because the focused view android.widget.EditText@4051f858 has no id.
07-26 15:10:44.919: D/SensorManager(6852): ====>>>>>Num Sensor: 1
07-26 15:10:44.919: D/SensorManager(6852): ====>>>>>Num Sensor: 2
07-26 15:10:44.919: D/SensorManager(6852): ====>>>>>Num Sensor: 3
07-26 15:10:44.919: D/SensorManager(6852): ====>>>>>Num Sensor: 4
07-26 15:10:44.919: D/SensorManager(6852): ====>>>>>Num Sensor: 5
07-26 15:10:44.919: D/SensorManager(6852): ====>>>>>Num Sensor: 6
07-26 15:10:44.919: D/SensorManager(6852): ====>>>>>Num Sensor: 0
07-26 15:10:44.919: E/SensorManager(6852): registerListener :: handle = 0  name= BMA220 delay= 200000 Listener= android.view.OrientationEventListener$SensorEventListenerImpl@4053b9b0
07-26 15:10:44.929: E/SensorManager(6852): =======>>>Sensor Thread RUNNING <<<========
07-26 15:10:44.939: E/SensorManager(6852): reg :: handle = 0
07-26 15:10:44.939: E/SensorManager(6852): registerListener :: handle = 0  name= BMA220 delay= 200000 Listener= com.bairuitech.anychat.AnyChatSensorHelper@4053a310
07-26 15:10:44.939: E/SensorManager(6852): reg :: handle = 0

作者: admin    时间: 2013-7-26 15:16
您好,从Log分析,摄像头并没有被成功打开,您可以在AnyChatCameraHelper.java中适当的加一些log输出,定位一下是在哪一个环节出错,谢谢。
作者: 博大的海    时间: 2013-7-26 15:31
程序后,经常报这个错误。这是不是和anycha资源是否释放有关。
6 15:27:59.100: D/dalvikvm(26892): GC_CONCURRENT freed 1514K, 14% free 16819K/19335K, paused 2ms+12ms, total 34ms
07-26 15:27:59.365: D/dalvikvm(26892): GC_CONCURRENT freed 1518K, 14% free 16821K/19335K, paused 2ms+2ms, total 27ms
07-26 15:27:59.645: D/dalvikvm(26892): GC_CONCURRENT freed 1519K, 13% free 16822K/19335K, paused 2ms+13ms, total 37ms
07-26 15:27:59.915: D/dalvikvm(26892): GC_CONCURRENT freed 1518K, 14% free 16821K/19335K, paused 2ms+2ms, total 26ms
07-26 15:28:00.220: D/dalvikvm(26892): GC_CONCURRENT freed 1507K, 13% free 16823K/19335K, paused 11ms+12ms, total 45ms
07-26 15:28:00.490: D/dalvikvm(26892): GC_CONCURRENT freed 1522K, 14% free 16822K/19335K, paused 2ms+3ms, total 27ms
07-26 15:28:00.760: D/dalvikvm(26892): GC_CONCURRENT freed 1519K, 14% free 16822K/19335K, paused 3ms+2ms, total 27ms
07-26 15:28:01.040: D/dalvikvm(26892): GC_CONCURRENT freed 1527K, 14% free 16821K/19335K, paused 3ms+13ms, total 39ms
07-26 15:28:01.310: D/dalvikvm(26892): GC_CONCURRENT freed 1514K, 14% free 16820K/19335K, paused 2ms+2ms, total 25ms
07-26 15:28:01.575: D/dalvikvm(26892): GC_CONCURRENT freed 1511K, 14% free 16820K/19335K, paused 2ms+2ms, total 25ms
07-26 15:28:01.845: D/dalvikvm(26892): GC_CONCURRENT freed 1516K, 14% free 16820K/19335K, paused 3ms+2ms, total 27ms
07-26 15:28:02.135: D/dalvikvm(26892): GC_CONCURRENT freed 1519K, 14% free 16821K/19335K, paused 12ms+12ms, total 47ms
07-26 15:28:02.405: D/dalvikvm(26892): GC_CONCURRENT freed 1517K, 14% free 16820K/19335K, paused 2ms+2ms, total 26ms
07-26 15:28:02.670: D/dalvikvm(26892): GC_CONCURRENT freed 1512K, 14% free 16821K/19335K, paused 2ms+2ms, total 26ms
07-26 15:28:02.940: D/dalvikvm(26892): GC_CONCURRENT freed 1516K, 13% free 16822K/19335K, paused 2ms+2ms, total 26ms
07-26 15:28:03.205: D/dalvikvm(26892): GC_CONCURRENT freed 1514K, 14% free 16820K/19335K, paused 2ms+2ms, total 26ms
07-26 15:28:03.475: D/dalvikvm(26892): GC_CONCURRENT freed 1516K, 14% free 16821K/19335K, paused 2ms+2ms, total 27ms
07-26 15:28:03.740: D/dalvikvm(26892): GC_CONCURRENT freed 1516K, 14% free 16820K/19335K, paused 2ms+2ms, total 26ms
07-26 15:28:04.015: D/dalvikvm(26892): GC_CONCURRENT freed 1542K, 14% free 16819K/19335K, paused 2ms+3ms, total 34ms
07-26 15:28:04.300: D/dalvikvm(26892): GC_CONCURRENT freed 1504K, 13% free 16823K/19335K, paused 12ms+3ms, total 36ms
07-26 15:28:04.575: D/dalvikvm(26892): GC_CONCURRENT freed 1513K, 14% free 16821K/19335K, paused 13ms+3ms, total 36ms
07-26 15:28:04.855: D/dalvikvm(26892): GC_CONCURRENT freed 1503K, 14% free 16820K/19335K, paused 12ms+2ms, total 35ms
07-26 15:28:05.145: D/dalvikvm(26892): GC_CONCURRENT freed 1508K, 14% free 16822K/19335K, paused 2ms+12ms, total 36ms
07-26 15:28:05.415: D/dalvikvm(26892): GC_CONCURRENT freed 1510K, 14% free 16822K/19335K, paused 2ms+2ms, total 25ms
07-26 15:28:05.685: D/dalvikvm(26892): GC_CONCURRENT freed 1510K, 14% free 16820K/19335K, paused 2ms+2ms, total 25ms
07-26 15:28:05.975: D/dalvikvm(26892): GC_CONCURRENT freed 1499K, 13% free 16823K/19335K, paused 2ms+2ms, total 27ms
07-26 15:28:06.255: D/dalvikvm(26892): GC_CONCURRENT freed 1513K, 13% free 16822K/19335K, paused 2ms+13ms, total 36ms
07-26 15:28:06.525: D/dalvikvm(26892): GC_CONCURRENT freed 1513K, 13% free 16823K/19335K, paused 2ms+2ms, total 26ms
07-26 15:28:06.800: D/dalvikvm(26892): GC_CONCURRENT freed 1511K, 14% free 16821K/19335K, paused 2ms+2ms, total 25ms
07-26 15:28:07.075: D/dalvikvm(26892): GC_CONCURRENT freed 1511K, 14% free 16821K/19335K, paused 2ms+12ms, total 35ms
07-26 15:28:07.345: D/dalvikvm(26892): GC_CONCURRENT freed 1512K, 14% free 16821K/19335K, paused 2ms+2ms, total 26ms
07-26 15:28:07.620: D/dalvikvm(26892): GC_CONCURRENT freed 1510K, 14% free 16820K/19335K, paused 2ms+13ms, total 36ms
07-26 15:28:07.885: D/dalvikvm(26892): GC_CONCURRENT freed 1511K, 14% free 16821K/19335K, paused 2ms+2ms, total 25ms
07-26 15:28:08.165: D/dalvikvm(26892): GC_CONCURRENT freed 1510K, 14% free 16820K/19335K, paused 2ms+13ms, total 35ms
07-26 15:28:08.440: D/dalvikvm(26892): GC_CONCURRENT freed 1511K, 14% free 16820K/19335K, paused 2ms+12ms, total 35ms
07-26 15:28:08.710: D/dalvikvm(26892): GC_CONCURRENT freed 1515K, 14% free 16821K/19335K, paused 2ms+2ms, total 26ms
作者: admin    时间: 2013-7-26 15:37
您好,这不是报错,是调试信息,属于JavaVM虚拟机的内存回收Debug信息,可以忽略。

主要是Java驱动下,视频的采集、播放均需要消耗一定的内存,所以会触发虚拟机的内存回收机制,如果采用内核驱动,则不会产生该提示,但是内核驱动不一定能适应所有的Android设备,Java驱动更通用一些。
作者: 博大的海    时间: 2013-7-26 15:58
在只有后置摄像头的情况下,官方的demo默认打开前置摄像头的。然后做了判断
if (AnyChatCoreSDK.mCameraHelper.GetCameraNumber() > 1) {
                                tv_switch.setVisibility(View.VISIBLE);
                                // 默认打开前置摄像头
                                AnyChatCoreSDK.mCameraHelper
                                                .SelectVideoCapture(AnyChatCoreSDK.mCameraHelper.CAMERA_FACING_FRONT);
                        }else {
                                tv_switch.setVisibility(View.INVISIBLE);
                                // 默认打开前置摄像头
                                AnyChatCoreSDK.mCameraHelper
                                                .SelectVideoCapture(AnyChatCoreSDK.mCameraHelper.CAMERA_FACING_BACK);
                        }

处理后,对方没法获取只有后置摄像头采集的图像信息。
作者: admin    时间: 2013-7-26 16:01
您好,把上面的代码全部屏蔽掉,是否工作正常?
作者: 博大的海    时间: 2013-7-26 16:50
全部屏蔽掉,没啥效果。就是你们官方demo,麻烦你处理下只有后置摄像头的情况。把解决方案告诉我。谢谢。
作者: admin    时间: 2013-7-26 16:56
您好,我们在只有后置摄像头的手机(三星 SCH-I699 Android 2.3.6)、Pad(台电 P85 Andorid 4.0.4)上测试过,标准的Demo是可以正常工作的。可以打开默认的后置摄像头。

所以在您的GT-S5660上不能正常工作属于特殊情况,需要您协助我们分析一下原因,前面已经给出了相关的调试建议:
您可以在AnyChatCameraHelper.java中适当的加一些log输出,定位一下是在哪一个环节出错,谢谢。


作者: 博大的海    时间: 2013-7-26 17:05
标准demo里只有
if (AnyChatCoreSDK.mCameraHelper.GetCameraNumber() > 1) {
                                tv_switch.setVisibility(View.VISIBLE);
                                // 默认打开前置摄像头
                                AnyChatCoreSDK.mCameraHelper
                                                .SelectVideoCapture(AnyChatCoreSDK.mCameraHelper.CAMERA_FACING_FRONT);
                        }
是在那里处理只有后置摄像头的?
作者: admin    时间: 2013-7-26 17:08
如果只有一个摄像头,则不论是否设置前置、后置摄像头,AnyChat都会打开这个摄像头。

换句话说,如果只有一个摄像头,则不需要选择前、后置摄像头。
作者: 博大的海    时间: 2013-7-26 17:20
admin 发表于 2013-7-26 17:08
如果只有一个摄像头,则不论是否设置前置、后置摄像头,AnyChat都会打开这个摄像头。

换句话说,如果只 ...

哦。那我设置以后,有时候,可以打开后置的。不设置,根本没成功过。这是机型的问题吗?
作者: admin    时间: 2013-7-26 17:35
抱歉,我一直以为您在GT-S5660上始终无法打开摄像头。
有时候,可以打开后置的
所以还是建议您在AnyChatCameraHelper.java中添加一些Log输出,看是在哪个地方打开摄像头失败,谢谢。

作者: 博大的海    时间: 2013-7-29 11:28
admin 发表于 2013-7-26 17:35
抱歉,我一直以为您在GT-S5660上始终无法打开摄像头。
所以还是建议您在AnyChatCameraHelper.java中添加一 ...

在AnyChatCameraHelper.java添加日志更本都打印,应该是AnyChatCoreSDK更本new不出来。偶尔打印出来日志,还可以获得头像的。
作者: 博大的海    时间: 2013-7-29 11:29
博大的海 发表于 2013-7-29 11:28
在AnyChatCameraHelper.java添加日志更本都打印,应该是AnyChatCoreSDK更本new不出来。偶尔打印出来日志 ...

是不是load so文件时出了问题。

作者: admin    时间: 2013-7-29 11:41
您好,如果Load so文件出现问题,则是无法登录系统的。
作者: 博大的海    时间: 2013-7-29 13:41
在AnyChatCameraHelper.java添加日志大部分时候不打印,偶尔打印出来日志,还可以获得头像的。同一份代码。
作者: admin    时间: 2013-7-29 13:58
您好,请问您是在哪些地方添加的Log输出?
作者: 博大的海    时间: 2013-7-29 14:00
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;
        }

       
       

}
作者: 博大的海    时间: 2013-7-29 14:00
能添加的地方都添加了。

作者: 廖斌    时间: 2013-7-29 14:17
建议您在surfaceview的三个生命周期都打上log,InitCamera部分添加的日志不同地方可以用不同的TAG或者CONTENT标示,不要全部都是 UtilsLog.log("hhhh", "==========");
作者: 廖斌    时间: 2013-7-29 14:24
出现打不开摄像头的时候,看日志在InitCamera中走到那一步
作者: 博大的海    时间: 2013-7-29 15:02
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=====
不正常情况下,一个也打不出来。
麻烦提供下思路。
作者: 廖斌    时间: 2013-7-29 15:24
不正常情况下面,surfaceCreated中的日志都没有打印出来?不正常的情况怎么样的,直接就跳出了?
作者: 博大的海    时间: 2013-7-29 15:30
日志都没打印的。没有跳出,只是黑屏,不展示。
另外你们的sdk兼容性测试,是针对机型的还是android版本的,我们测试机好多都是黑屏幕,
比如:三星s5660,酷派系列N916。
作者: 廖斌    时间: 2013-7-29 15:41
哦,我们的SDK支持android 2.2、android 2.3、android 4.x的android版本设备,原生的android系统都是可以正常跑的。
你的程序采用的是java模式吗?你在       
                // 如果是采用Java视频采集,则需要设置Surface的CallBack
                if(AnyChatCoreSDK.GetSDKOptionInt(AnyChatDefine.BRAC_SO_LOCALVIDEO_CAPDRIVER) == AnyChatDefine.VIDEOCAP_DRIVER_JAVA) {
                        myView.getHolder().addCallback(AnyChatCoreSDK.mCameraHelper);                       
                }
                中加日志看看是否是java模式,java模式surfaceCreated一定是会执行的
作者: 廖斌    时间: 2013-7-29 16:19
博大的海 发表于 2013-7-29 15:30
日志都没打印的。没有跳出,只是黑屏,不展示。
另外你们的sdk兼容性测试,是针对机型的还是android版本的 ...

三星s5660,酷派系列N916

这两款都是android 2.2的版本?java模式有些api只有在android 2.3以上才有哦,android 2.2模式可以用内核模式。你可以在程序中判断下系统的版本号
作者: admin    时间: 2013-7-29 16:23
这里面的设备都是实际测试过的:http://bbs.anychat.cn/forum.php? ... d=23&extra=page%3D1,是针对机型做的测试。
作者: admin    时间: 2013-7-29 16:27
如果是Android 2.2的版本,可能要改一下AnyChatCameraHelper.java这个文件,把Eclipse里面的Android版本号修改为android 2.2,然后单独做一个版本出来。

您的问题基本上确认是:用Android 2.3的SDK开发的apk,在Android 2.2的系统上运行,导致黑屏,或是异常。主要原因是Android 2.2和Android 2.3两个版本的SDK有差异(是Google原生的SDK,不是AnyChat的SDK),如Android 2.2不支持多摄像头,所以有冲突,需要单独编译一个版本。
作者: 博大的海    时间: 2013-7-29 16:48
这是三星手机的配置,真心不是android 2.2。酷派系列N916是android 2.2,但是上面的问题都是三星的手机出现的问题。

三星手机.jpg (15.56 KB, 下载次数: 3974)

三星手机.jpg

作者: 廖斌    时间: 2013-7-29 17:07
哦,三星的机子我是看的http://detail.zol.com.cn/272/271438/param.shtml这个配置;我编译了一个android 2.2的AnyChatCameraHelper文件,你替换之前的,用三星和酷派的机子试下,文件在附件中

AnyChatCameraHelper.rar

1.98 KB, 下载次数: 1


作者: 博大的海    时间: 2013-7-30 10:50
大哥,你编译个android 2.2的,就算我能用,我们总不能,专门为android 2.2的发布个apk,或者针对那个机型发布个apk吧。
我想问一下,你们这个sdk对双摄像头的,是不是适配的比较好(昨天我自己测试了十几个机型,双摄像头都还可以)?
另外我想问一个数据,目前android手机双摄像头的占有率都有多高,你们做这个这个数据应该有吧,权威一些的?
我再仔细研究一下你改的代码,看看有没有折中的解决方案。
作者: 廖斌    时间: 2013-7-30 11:07
  1. 你们这个sdk对双摄像头的,是不是适配的比较好
复制代码
是的。目前市面上的设备基本都是android 2.3以上的系统了,android 2.2以下的系统的设备基本上都是几年前的设备了。折中的方法有一个,就是用android 2.2的设备用我们的内核模式,android 2.3以上的设备用java模式。
作者: 廖斌    时间: 2013-7-30 11:09
你可以用我们的demo在三星s5660,酷派系列N916上面试下我们的demo,用内核模式
作者: 博大的海    时间: 2013-7-30 11:21
在我们的应用中不提供设置内核模式或者Java模式,这是你们提供的sdk有判断的方法吗,还是不能正常工作,就是换另一种方式?
作者: admin    时间: 2013-7-30 11:34
您好,早期的设备(Android 2.2及以下)都只有一个摄像头,所以Google提供的原生Android SDK也只支持1个摄像头;最新的设备(Android 2.3及以上)都有两个摄像头;
如果您的设备是早期的(Android 2.2),而且和标准的Android内核不兼容(不能运行内核模式),则只能单独编译一个apk供这种类型的设备使用。

作者: 博大的海    时间: 2013-7-30 13:16
在我们的应用中不提供设置内核模式或者Java模式,这是你们提供的sdk有判断的方法吗,还是不能正常工作,就是换另一种方式?
作者: 廖斌    时间: 2013-7-30 13:38
博大的海 发表于 2013-7-30 13:16
在我们的应用中不提供设置内核模式或者Java模式,这是你们提供的sdk有判断的方法吗,还是不能正常工作,就 ...

您好,早期的设备(Android 2.2及以下)都只有一个摄像头,所以Google提供的原生Android SDK也只支持1个摄像头;最新的设备(Android 2.3及以上)都有两个摄像头;
如果您的设备是早期的(Android 2.2),不能使用java模式,而且和标准的Android内核不兼容(不能运行内核模式),则只能单独编译一个apk供这种类型的设备使用。
作者: admin    时间: 2013-7-30 13:41
您好,在前面反馈的有问题的设备:GT-S5660,采用内核驱动模式,工作是否正常?
作者: 博大的海    时间: 2013-7-30 13:50
还没有测试呢。


两个手机离的近,进行视频通话,出现呲呲的响声?是不是正常现象?
作者: admin    时间: 2013-7-30 13:54
您好,手机距离太近,语音通话过程会产生干扰,请将距离隔远一些再测试看看。
作者: 博大的海    时间: 2013-7-30 14:59
测试手机为华为C8650+(单摄像头)操作系统,android 2.3,和其他手机(双摄像头)连接,出现黑屏问题。另外华为的进入房间后,一段时间后会自动退出房间,再次重新进入。

弱弱的问一句,你们在手机上的使用的公司多吗?他们都是咋解决这些问题的?
作者: admin    时间: 2013-7-30 15:13
您好,查了一下华为C8650+的配置:http://detail.zol.com.cn/cell_phone/index307697.shtml 属于较低端的一款手机,非常抱歉,目前Android的碎片化问题是业界的通病,特别是在低端设备上表现更为明显,目前很难保证开发一款音视频通话的应用可以在所有硬件设备上正常运行,我们也一直在做各种类型设备的适配工作。目前AnyChat在主流的,或是中、高端的Android设备上均能正常工作。
作者: 博大的海    时间: 2013-7-31 17:10
你们的sdk有没有什么重连机制。在视频过程中突然断网了,是怎么处理的?另外是不是手机客户调用了anychat.Release(),房间都得到了释放,就是手机客户端,释放房间资源的方法是?
作者: 廖斌    时间: 2013-7-31 17:25
博大的海 发表于 2013-7-31 17:10
你们的sdk有没有什么重连机制。在视频过程中突然断网了,是怎么处理的?另外是不是手机客户调用了anychat.R ...

1、你们的sdk有没有什么重连机制,在视频过程中突然断网了,是怎么处理的
有的,当网络重新连接时,客户会重新收到相应的回调消息。网络断开,通常是关闭音视频,网络重连的时候再打开
2、另外是不是手机客户调用了anychat.Release(),房间都得到了释放
调用anychat.Release(),会释放整个SDK的资源。再次使用的时候必须调用重新InitSdk.
3.离开房间,调用LeaveRoom就行了。
作者: admin    时间: 2013-7-31 17:58
您好,SDK具备自动重连机制,默认情况下网络断开之后,会自动重连,自动登录,自动进入之前的房间,若需要屏蔽自动重连机制,则只需要调用Logout即可。

另外帖子太长了,新开一个,
作者: 博大的海    时间: 2013-7-31 19:10
你们这个sdk在实时视频的时候,手机调用MediaRecorder类进行录制自己的声音和视频,会不会和你们的sdk有冲突?这个方案可以行吗?
作者: admin    时间: 2013-7-31 21:08
您好,我觉得应该是有冲突的,因为摄像头设备只有一个,当被某一个程序打开之后,设备就会被占用,其它程序再打开就会失败。
作者: 博大的海    时间: 2013-8-1 09:39
admin 发表于 2013-7-31 21:08
您好,我觉得应该是有冲突的,因为摄像头设备只有一个,当被某一个程序打开之后,设备就会被占用,其它程序 ...

那iphone上是不是也是冲突的?那么想保存本地摄像的摄像信息和声音,有什么好的解决方案?
作者: admin    时间: 2013-8-1 10:42
您好,目前AnyChat暂时不支持Android、iPhone端本地的音视频录制,目前可以通过服务器来集中录像,暂时没有更好的解决方案,抱歉。




欢迎光临 AnyChat技术支持论坛 (http://bbs.anychat.cn/) Powered by Discuz! X3