#android #service #camera
#Android #Обслуживание #камера
Вопрос:
Я новичок в программировании. Мое требование — автоматический захват фотографий с помощью моей мобильной камеры. Кто-нибудь может помочь решить мою проблему, заранее спасибо.
Я пытаюсь последние три дня, пожалуйста, решите мою проблему, если кому-то интересно
public class ServiceActivity extends Activity {
String msg = "Android : ";
View view;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(msg, "The onCreate() event");
}
public void startService(View view) {
startService(new Intent(getBaseContext(), CameraService.class));
}
// Method to stop the service
public void stopService(View view) {
stopService(new Intent(getBaseContext(), CameraService.class));
}}
ниже приведен код службы, с помощью которого камера моего мобильного телефона должна открываться автоматически, затем следует сделать снимок, не нажимая кнопку камеры, затем его следует сохранить в локальном хранилище
public class CameraService extends Service {
static int x=0;
//Camera variables
//a surface holder
private SurfaceHolder sHolder;
//a variable to control the camera
private Camera mCamera;
//the camera parameters
private android.hardware.Camera.Parameters parameters;
/** Called when the activity is first created. */
@Override
public void onCreate()
{
super.onCreate();
}
@Override
public void onStart(Intent intent, int startId) {
// TODO Auto-generated method stub
super.onStart(intent, startId);
mCamera = Camera.open();
SurfaceView sv = new SurfaceView(getApplicationContext());
try {
mCamera.setPreviewDisplay(sv.getHolder());
parameters = mCamera.getParameters();
//set camera parameters
mCamera.setParameters(parameters);
mCamera.startPreview();
mCamera.takePicture(null, null, mCall);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//Get a surface
sHolder = sv.getHolder();
//tells Android that this surface will have its data constantly replaced
sHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
Camera.PictureCallback mCall = new Camera.PictureCallback()
{
public void onPictureTaken(byte[] data, Camera camera)
{
//decode the data obtained by the camera into a Bitmap
FileOutputStream outStream = null;
try{
x ;
outStream = new FileOutputStream("/sdcard/Image" x ".jpg");
outStream.write(data);
outStream.close();
mCamera.release();
Toast.makeText(getApplicationContext(), "picture clicked", Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e){
Log.d("CAMERA", e.getMessage());
} catch (IOException e){
Log.d("CAMERA", e.getMessage());
}
}
};
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}}
Комментарии:
1. Таким образом, камера открывается автоматически, а снимок делается и сохраняется в файле. Все автоматически. Неплохо. Молодец.
2. @blackapps вы знаете, как это сделать
3. Вы не поняли мой комментарий. Если у вас возникли какие-либо проблемы, сообщите о них в своем сообщении. А затем спросите. Я не вижу проблем. Я не вижу вопросов.
4. Вы должны точно указать, что не работает. Вы не сказали ничего точного. Не работает только сохранение в файл? Мы не знаем! Вы должны сказать, что именно происходит, а что нет. Не давайте нам угадывать. ПОМЕСТИТЕ ВСЕ ЭТО В СВОЙ ПОСТ.
5. @blackapps Камера не делает снимок