schwarze Hintergrundfarbe zeigt Kürzlich CCTV-Kamera-App habe ich aber, wenn keine Kamera in Gerät haben, zeigt dieses logcat und App gestorben istWenn keine Kamera in Gerät haben, auf Android
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)
und meine Quelle 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);
.
.
.
}
wenn keine Kamera haben. capturer
diese Rückkehr null
so teste ich
if (capturer == null || capturer.equals("") == true) {
try {
rebootProcess = Runtime.getRuntime().exec(new String[]{"su", "-c", "reboot"});
} catch (IOException e) {
e.printStackTrace();
}
}
und ich ausführen App. Ich mein Gerät neu gestartet, aber ich will, wenn keine Kamera haben, schwarze Farbe Hintergrund zeigt
Wenn sein verbunden Kamera dann zeigt es GLSurfaceView
glview = (GLSurfaceView) findViewById(R.id.glview);
VideoRendererGui.setView(glview, null) ;
try {
. . . .
} catch {
}
vielleicht, ich Fragment benutzen? bitte rat für mich. Ich denke
if (capturer == null || capturer.equals("") == true) {
// showing black background ??..
}
aber ich weiß nicht, schwarzen Hintergrund Teil zeigt.
danke.
@update
MainActivity.java (full oncreate)
@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
}
ich meine Quelle Beratung Ihrer geändert. aber auftreten nullpointerException
In anderen Teil. Wie kann ich programmgesteuert?
dank @Vinoth Vino – chohyunwook