error is because of this
<view
class="com.group.cam.MainActivity$JavaCameraImageView"
android:id="@+id/camera_surface_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
you should make your inner class static.
The thing is static inner classes are nothing but a class which is accessible via it's outer class.
This class does not belong to the instance of the outer class but the outer class itself so to create an object of static inner class all you need to do is:
new Outer.Inner();
Outer.Inner
becomes it's qualified name
But if your inner class is not static then it belongs to the instance of the outer class so to create an object you need to write:
new Outer().new Inner();
This class is not accessible view Outer class but via Object of outer class.
That is why when you use it in manifest this class is not accessible via your class name.