我正在尝试在Android Studio中的片段中访问相机。 这些是我编写的代码 我的片段代码:
package com.example.proje.ui.camera;
import android.hardware.Camera;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders;
import com.example.proje.ui.camera.CameraViewModel;
import com.example.proje.R;
public class CameraFragment extends Fragment {
Camera camera;
FrameLayout frameLayout;
ShowCamera showCamera;
@Override
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_camera, container, false);
return root;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
frameLayout = (FrameLayout)getActivity().findViewById(R.id.frameLayout);
camera = Camera.open();
showCamera = new ShowCamera(getContext(), camera);
frameLayout.addView(showCamera);
}
}
ShowCamera代码:
package com.example.proje.ui.camera;
import android.content.Context;
import android.content.res.Configuration;
import android.hardware.Camera;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import java.io.IOException;
public class ShowCamera extends SurfaceView implements SurfaceHolder.Callback
{
Camera camera;
SurfaceHolder holder;
public ShowCamera(Context context, Camera camera) {
super(context);
this.camera = camera;
holder = getHolder();
holder.addCallback(this);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
Camera.Parameters params = camera.getParameters();
if(this.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE)
{
params.set("orientation", "portrait");
camera.setDisplayOrientation(90);
params.setRotation(90);
}
else
{
params.set("orientation", "landscape");
camera.setDisplayOrientation(0);
params.setRotation(0);
}
camera.setParameters(params);
try
{
camera.setPreviewDisplay(holder);
camera.startPreview();
} catch (IOException e)
{
e.printStackTrace();
}
}
}
我已经从Android清单文件中给予了必要的权限。在Android Studio中编译顺利,但当我在手机上运行时,出现了应用程序停止的错误。
我该如何解决这个问题?