question about developing own application

  • Replies:0
  • Answered
Sergey
  • Forum posts: 1

May 30, 2013, 7:57:38 PM via Website

Hi, all please help me. I have next error in my device Android 2.3.4 (on emulator it is not present):
I/ActivityManager( 245): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.diploma.photoshare/.MainActivity } from pid 19081
I/ActivityManager( 245): Start proc com.diploma.photoshare for activity com.diploma.photoshare/.MainActivity: pid=21877 uid=10122 gids={1006, 1015, 3003}
I/ActivityManager( 245): Displayed com.diploma.photoshare/.MainActivity: +681ms
I/Information(21877): Start send photo
I/dalvikvm(21877): at com.diploma.photoshare.MainActivity$SendMediaToWebSite.doInBackground(MainActivity.java:256)
I/dalvikvm(21877): at com.diploma.photoshare.MainActivity$SendMediaToWebSite.doInBackground(MainActivity.java:1)
E/AndroidRuntime(21877): at com.diploma.photoshare.MainActivity$SendMediaToWebSite.doInBackground(MainActivity.java:256)
E/AndroidRuntime(21877): at com.diploma.photoshare.MainActivity$SendMediaToWebSite.doInBackground(MainActivity.java:1)
W/ActivityManager( 245): Force finishing activity com.diploma.photoshare/.MainActivity
I/ActivityManager( 245): Process com.diploma.photoshare (pid 21877) has died.

But this error is not always throws, sometimes application run normal.


this code my activity:

package com.diploma.photoshare;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;

import my.course.base64.Base64Convert;

import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.hardware.Camera;
import android.hardware.Camera.Size;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;

public class MainActivity extends Activity implements SurfaceHolder.Callback,
View.OnClickListener, Camera.PictureCallback, Camera.PreviewCallback,
Camera.AutoFocusCallback {
private Camera camera;
private SurfaceHolder surfaceHolder;
private SurfaceView preview;
private Button shotBtn;
private Button closeBtn;
private static Log LOG;
private String pathToSave;
private String namePhoto;
private long filename;
public final static String PATH_TO_SAVE = "pathToSave";
public final static String FILE_NAME = "fileName";

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

requestWindowFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.activity_main);


preview = (SurfaceView) findViewById(R.id.SurfaceView01);

surfaceHolder = preview.getHolder();
surfaceHolder.addCallback(this);
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);


shotBtn = (Button) findViewById(R.id.Button01);
shotBtn.setText("Shot");
shotBtn.setOnClickListener(this);
closeBtn = (Button) findViewById(R.id.Button02);
closeBtn.setText("Close");
closeBtn.setOnClickListener(this);
}

@Override
protected void onResume() {
super.onResume();
camera = Camera.open();
}

@Override
protected void onPause() {
super.onPause();

if (camera != null) {
camera.setPreviewCallback(null);
camera.stopPreview();
camera.release();
camera = null;
}
}

@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
}

@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
camera.setPreviewDisplay(holder);
camera.setPreviewCallback(this);
} catch (IOException e) {
e.printStackTrace();
}

Size previewSize = camera.getParameters().getPreviewSize();
float aspect = (float) previewSize.width / previewSize.height;

int previewSurfaceWidth = preview.getWidth();
int previewSurfaceHeight = preview.getHeight();

LayoutParams lp = preview.getLayoutParams();



if (this.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE) {
// портретный вид
camera.setDisplayOrientation(90);
lp.height = previewSurfaceHeight;
lp.width = (int) (previewSurfaceHeight / aspect);
;
} else {

camera.setDisplayOrientation(0);
lp.width = previewSurfaceWidth;
lp.height = (int) (previewSurfaceWidth / aspect);
}

preview.setLayoutParams(lp);
camera.startPreview();
}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}

@Override
public void onClick(View v) {
if (v == shotBtn) {
camera.autoFocus(this);

}

if (v == closeBtn) {
moveTaskToBack(true);

}
}

@Override
public void onPictureTaken(byte[] paramArrayOfByte, Camera paramCamera) {


try {
File saveDir = new File("/sdcard/CameraExample/");

if (!saveDir.exists()) {
saveDir.mkdirs();
}

filename = System.currentTimeMillis();
pathToSave = String
.format("/sdcard/CameraExample/%d.jpg", filename);
FileOutputStream os = new FileOutputStream(pathToSave);
os.write(paramArrayOfByte);
os.close();

SendMediaToWebSite sendMediaToWebSite = new SendMediaToWebSite();
sendMediaToWebSite.execute();
} catch (Exception e) {
LOG.e("E", e.getStackTrace().toString());
}


paramCamera.startPreview();
}

@Override
public void onAutoFocus(boolean paramBoolean, Camera paramCamera) {
if (paramBoolean) {

paramCamera.takePicture(null, null, null, this);
}
}

@Override
public void onPreviewFrame(byte[] paramArrayOfByte, Camera paramCamera) {

}

class SendMediaToWebSite extends AsyncTask<String, Void, Void> {

@Override
protected void onPreExecute() {
super.onPreExecute();

}

@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);

}

@Override
protected Void doInBackground(String... params) {
String imgstr = Base64Convert.encodeToString(pathToSave);
namePhoto = String.valueOf(filename);
final String comment = "hard code comment";
LOG.i("Information", "Start send photo");
JSONObject js = new JSONObject();
try {
js.put("image", imgstr);// imgstr - my photo in base64 format
js.put("user", "user");
js.put("namePhoto", namePhoto + ".jpg");
js.put("comment", comment);
} catch (JSONException e) {
LOG.e("E", e.getStackTrace().toString());
}

StringEntity input = null;

try {
input = new StringEntity(js.toString());//Throwing error this!!!!!!!!!!!
} catch (UnsupportedEncodingException e) {
LOG.e("E", e.getStackTrace().toString());
}
js = null;
input.setContentType("application/json ");

LOG.i("Information", "Set input");
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost postRequest = new HttpPost(
"my url");
postRequest.setEntity(input);

try {
httpClient.execute(postRequest);
} catch (ClientProtocolException e) {
LOG.e("E", e.getStackTrace().toString());
} catch (IOException e) {
LOG.e("E", e.getStackTrace().toString());
}
return null;
}
}

}

Regards, Sergey

Reply