기기에 카메라가없는 경우 Android에서 검은 색 배경색이 표시됨

초 현욱

최근에 CCTV 카메라 앱을 사용했는데 기기에 카메라가 없으면이 logcat 이 표시 되고 앱이 종료됩니다.

java.lang.RuntimeException: Unable to start activity ComponentInfo{kr.co.iosystem.blackeyeonandroid/kr.co.iosystem.blackeyeonandroid.BlackEyeActivity}: java.lang.NullPointerException
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
    at android.app.ActivityThread.access$800(ActivityThread.java:135)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:136)
    at android.app.ActivityThread.main(ActivityThread.java:5001)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
    at dalvik.system.NativeStart.main(Native Method)
 Caused by: java.lang.NullPointerException
    at org.webrtc.PeerConnectionFactory.createVideoSource(PeerConnectionFactory.java:111)
    at kr.co.iosystem.blackeyeonandroid.BlackEyeActivity.onCreate(MainActivity.java:235)
    at android.app.Activity.performCreate(Activity.java:5231)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) 
    at android.app.ActivityThread.access$800(ActivityThread.java:135) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:136) 
    at android.app.ActivityThread.main(ActivityThread.java:5001) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:515) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
    at dalvik.system.NativeStart.main(Native Method) 

내 소스 MainActivity.java

@Override
protected void onCreate(final Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);

   String nameOfFrontFacingDevice = VideoCapturerAndroid.getNameOfFrontFacingDevice();
   String nameOfBackFacingDevice = VideoCapturerAndroid.getNameOfBackFacingDevice();
   VideoCapturerAndroid capturer = VideoCapturerAndroid.create(nameOfFrontFacingDevice);
   . 
   . 
   . 
   }

카메라가 없다면. capturer이 반환 null그래서 나는 테스트

if (capturer == null || capturer.equals("") == true) {
   try {
      rebootProcess = Runtime.getRuntime().exec(new String[]{"su", "-c", "reboot"});
   } catch (IOException e) {
      e.printStackTrace();
    }
 }

앱을 실행합니다. 장치를 재부팅했지만 카메라가없는 경우 검정색 배경을 표시하고 싶습니다.

카메라에 연결되어 있으면 GLSurfaceView

glview = (GLSurfaceView) findViewById(R.id.glview);
VideoRendererGui.setView(glview, null) ;
try {
     . . . .
} catch {
}

아마도 조각을 사용합니까? 저에게 조언을 부탁드립니다. 나는 생각한다

if (capturer == null || capturer.equals("") == true) {
   // showing black background ??..
  } 

근데 검은 색 배경 부분은 잘 모르겠어요.

감사.

@최신 정보

MainActivity.java (전체 생성시)

@Override
protected void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    String nameOfFrontFacingDevice = VideoCapturerAndroid.getNameOfFrontFacingDevice();

    if (nameOfFrontFacingDevice != null) {
        VideoCapturerAndroid capturer = VideoCapturerAndroid.create(nameOfFrontFacingDevice);

        MediaConstraints videoConstraints = new MediaConstraints();
        VideoSource videoSource = peerConnectionFactory.createVideoSource(capturer, videoConstraints);
        localVideoTrack = peerConnectionFactory.createVideoTrack(VIDEO_TRACK_ID, videoSource);

        glview =(GLSurfaceView) findViewById.(R.id.showing);
        VideoRendererGui.setView(glview, null);
        try {
            renderer = VideoRendererGui.createGui(0,0,100,100, VideoRendererGui.ScalingType.SCALE_ASPECT_FILL, true);
            localVideoTrack.addRenderer(renderer);
        } catch (Exception e) {
             e.printStackTrace();
        }

        mediaStream = peerConnectionFactory.createLocalMediaStream(LOCAL_MEDIA_STREAM_ID);
        mediaStream.addTrack(localVideoTrack);
    } else {
        //space
    }

나는 당신의 조언을 내 소스를 변경했습니다. 그러나 발생nullpointerException

다른 부분에서. 프로그래밍 방식으로 어떻게 할 수 있습니까?

Shaishav

카메라를 사용하는 앱인 경우이 기능이없는 휴대폰에 앱을 설치하면 안됩니다. 매니페스트에 다음을 입력하십시오.

<uses-feature android:name="android.hardware.camera"
    required="true" />

[편집하다]

VideoCapturerAndroid소스 에 따르면 null카메라가 없으면 다음 줄이 반환 됩니다.

String nameOfFrontFacingDevice = VideoCapturerAndroid.getNameOfFrontFacingDevice();

따라서 귀하의 경우 이것은 자체적으로 null이어야합니다. 그러나 이름을 create. 나는 이것이 NPE가 오는 곳이라고 생각합니다.

VideoCapturerAndroid capturer = VideoCapturerAndroid.create(nameOfFrontFacingDevice); // name might be null

따라서 여기에 null 검사를해야합니다.

if (nameOfFrontFacingDevice != null) {
    VideoCapturerAndroid capturer = VideoCapturerAndroid.create(nameOfFrontFacingDevice);
} else {
    // Other stuff
}

[편집 2]

어떤 카메라 장치를 들어, 포착 기 아직도 나오는 것 null그리고 그에게 전화로 문제를 만들고있다 peerConnectionFactory.createVideoSource(capturer, videoConstraints). 따라서 카메라가 있고 NPE를 피하는 경우에만 호출 할 수 있습니다. 이제 glview.onResume()call in activity 에서 또 다른 문제가 발생 합니다 onResume(). 따라서 카메라를 확인하기 전에 초기화해야합니다. 제안 된 수정 사항은 아래 코드를 확인하십시오.

        String nameOfFrontFacingDevice = VideoCapturerAndroid.getNameOfFrontFacingDevice();
        String nameOfBackFacingDevice = VideoCapturerAndroid.getNameOfBackFacingDevice();
        Log.i(TAG, "VideoCapturerAndroid.getNameOfFrontFacingDevice() = " + nameOfFrontFacingDevice);
        Log.i(TAG, "VideoCapturerAndroid.getNameOfBackFacingDevice() = " + nameOfBackFacingDevice);
        VideoCapturerAndroid capturer = VideoCapturerAndroid.create(nameOfFrontFacingDevice);

        // Initialising the glview here
        glview = (GLSurfaceView) findViewById(R.id.glview);
        VideoRendererGui.setView(glview, null);

        MediaConstraints videoConstraints = new MediaConstraints();
        if (capturer == null || capturer.equals("")) {
            Log.d(TAG, "not camera");

        }
        // Doing further processing only if capturer is not null
        else {
            VideoSource videoSource = peerConnectionFactory.createVideoSource(capturer, videoConstraints);

            localVideoTrack = peerConnectionFactory.createVideoTrack(VIDEO_TRACK_ID, videoSource);

            try {
                renderer = VideoRendererGui.createGui(0, 0, 100, 100, VideoRendererGui.ScalingType.SCALE_ASPECT_FILL, true);
                renderer_sub = VideoRendererGui.createGui(72, 72, 25, 25, VideoRendererGui.ScalingType.SCALE_ASPECT_FILL, true);
                localVideoTrack.addRenderer(renderer_sub);
                localVideoTrack.addRenderer(renderer);
            } catch (Exception e) {
                e.printStackTrace();
            }

            mediaStream = peerConnectionFactory.createLocalMediaStream(LOCAL_MEDIA_STREAM_ID);
            mediaStream.addTrack(localVideoTrack);

            ImageButton imageButton = (ImageButton) findViewById(R.id.backbutton);
            imageButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    moveTaskToBack(true);
                    finish();
                    android.os.Process.killProcess(android.os.Process.myPid());
                }
            });
        } 

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

바탕 화면에 배경 화면 대신 흰색 또는 검은 색 배경이 표시됨

분류에서Dev

Wordpress 배경 이미지가 표시되지 않음-Chrome 검사기에서 회색으로 표시됨

분류에서Dev

Rotate BufferedImage에 검은 색 경계가 표시됨

분류에서Dev

오버레이에 불투명도가있는 검은 색 배경이있는 경우 검은 색이 표시되지 않습니다.

분류에서Dev

여러 섹션이있는 경우 테이블보기가 검은 색으로 표시됨

분류에서Dev

기기에서 이미지가 검은 색으로 표시됨> Android 이미지보기

분류에서Dev

문제 :이 카메라에 이미지가 표시되고 글로우 효과가 포함 된 경우 검은 색이됩니다.

분류에서Dev

카메라를 열 때 처음에는 검은 색으로 표시됨-Objective C

분류에서Dev

Crystal 보고서에 이미지를 표시 할 때 배경 텍스트가 검정색 인 경우

분류에서Dev

마시멜로에서 런타임에 전화 상태 읽기 권한을 요청할 때 앱이 닫히고 배경이 검은 색으로 표시됨

분류에서Dev

브라우저에서 투명도가있는 PNG를 복사하면 대신 검은 색 배경이 표시됩니다.

분류에서Dev

Android의 HTML5 동영상 배경이 검은 색으로 표시됨

분류에서Dev

Excel에서 셀 배경이 검은 색일 때 눈금 선을 표시하는 방법은 무엇입니까?

분류에서Dev

LaunchImage와 TabBarViewController 사이에 표시되는 은색 배경

분류에서Dev

기기 및 시뮬레이터에서 흰색 배경이 색상 혼합 레이어로 표시되는 UITextView

분류에서Dev

롤리팝에서 앱 배경이 흰색으로 표시됨

분류에서Dev

API 14-15에서 검은 색으로 표시되는 투명한 배경

분류에서Dev

범위에 채우기 색상이없는 경우 오류 표시

분류에서Dev

CSS의 배경색이 테이블에 표시됨

분류에서Dev

Android에서 배경 투명도가 검은 색으로 바뀜

분류에서Dev

네이티브 스크립트에서 모달보기를 표시 할 때 창 배경을 검은 색으로 바꾸는 방법

분류에서Dev

PDF 파일 / URL을로드하면 Safari 브라우저에서 검은 색 화면이 표시됨

분류에서Dev

이전 프로젝트에서보기에 검은 색 줄무늬가 표시됨

분류에서Dev

Android 기기에서 카메라를 뒤집는 동안 WebRTC 검은 색 화면

분류에서Dev

검정색 배경에 흰색 텍스트 가져 오기

분류에서Dev

Android 앱의 검은 색 기본 배경색을 변경하는 방법

분류에서Dev

Azure Search-검색 가능한 값에 문장 구분 기호가있는 경우 검색 강조 표시 값이 중단됩니다.

분류에서Dev

Android지도에서 USB를 통해 연결된 기기에 빈 화면 (검은 색 화면)이 표시됨

분류에서Dev

터미널에 검은 색 화면 Ubuntu 14.04가 표시됨

Related 관련 기사

  1. 1

    바탕 화면에 배경 화면 대신 흰색 또는 검은 색 배경이 표시됨

  2. 2

    Wordpress 배경 이미지가 표시되지 않음-Chrome 검사기에서 회색으로 표시됨

  3. 3

    Rotate BufferedImage에 검은 색 경계가 표시됨

  4. 4

    오버레이에 불투명도가있는 검은 색 배경이있는 경우 검은 색이 표시되지 않습니다.

  5. 5

    여러 섹션이있는 경우 테이블보기가 검은 색으로 표시됨

  6. 6

    기기에서 이미지가 검은 색으로 표시됨> Android 이미지보기

  7. 7

    문제 :이 카메라에 이미지가 표시되고 글로우 효과가 포함 된 경우 검은 색이됩니다.

  8. 8

    카메라를 열 때 처음에는 검은 색으로 표시됨-Objective C

  9. 9

    Crystal 보고서에 이미지를 표시 할 때 배경 텍스트가 검정색 인 경우

  10. 10

    마시멜로에서 런타임에 전화 상태 읽기 권한을 요청할 때 앱이 닫히고 배경이 검은 색으로 표시됨

  11. 11

    브라우저에서 투명도가있는 PNG를 복사하면 대신 검은 색 배경이 표시됩니다.

  12. 12

    Android의 HTML5 동영상 배경이 검은 색으로 표시됨

  13. 13

    Excel에서 셀 배경이 검은 색일 때 눈금 선을 표시하는 방법은 무엇입니까?

  14. 14

    LaunchImage와 TabBarViewController 사이에 표시되는 은색 배경

  15. 15

    기기 및 시뮬레이터에서 흰색 배경이 색상 혼합 레이어로 표시되는 UITextView

  16. 16

    롤리팝에서 앱 배경이 흰색으로 표시됨

  17. 17

    API 14-15에서 검은 색으로 표시되는 투명한 배경

  18. 18

    범위에 채우기 색상이없는 경우 오류 표시

  19. 19

    CSS의 배경색이 테이블에 표시됨

  20. 20

    Android에서 배경 투명도가 검은 색으로 바뀜

  21. 21

    네이티브 스크립트에서 모달보기를 표시 할 때 창 배경을 검은 색으로 바꾸는 방법

  22. 22

    PDF 파일 / URL을로드하면 Safari 브라우저에서 검은 색 화면이 표시됨

  23. 23

    이전 프로젝트에서보기에 검은 색 줄무늬가 표시됨

  24. 24

    Android 기기에서 카메라를 뒤집는 동안 WebRTC 검은 색 화면

  25. 25

    검정색 배경에 흰색 텍스트 가져 오기

  26. 26

    Android 앱의 검은 색 기본 배경색을 변경하는 방법

  27. 27

    Azure Search-검색 가능한 값에 문장 구분 기호가있는 경우 검색 강조 표시 값이 중단됩니다.

  28. 28

    Android지도에서 USB를 통해 연결된 기기에 빈 화면 (검은 색 화면)이 표시됨

  29. 29

    터미널에 검은 색 화면 Ubuntu 14.04가 표시됨

뜨겁다태그

보관