Android 即使在更正清单文件和数据连接后也会获得未知的异常
我正在尝试制作一个应用程序,按下一个按钮,从相机上获取一张照片,然后在SurfaceView上显示,然后通过internet将其发送到一个.php文件。我的代码在http连接java.net.UnknownHostException:sibot.bugs3.com中给出了一个错误 我的MainActivity.java文件如下Android 即使在更正清单文件和数据连接后也会获得未知的异常,android,android-camera,Android,Android Camera,我正在尝试制作一个应用程序,按下一个按钮,从相机上获取一张照片,然后在SurfaceView上显示,然后通过internet将其发送到一个.php文件。我的代码在http连接java.net.UnknownHostException:sibot.bugs3.com中给出了一个错误 我的MainActivity.java文件如下 public class MainActivity extends Activity { Button btn; ImageView img; @
public class MainActivity extends Activity {
Button btn;
ImageView img;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn=(Button) findViewById(R.id.button1);
img=(ImageView) findViewById(R.id.sv);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
CaptureImage(img);
}
});
}
private void CaptureImage( final ImageView iv_image) {
int FrontCameraFound = getCameraID();
if (FrontCameraFound != -1) {
final Camera mCamera = Camera.open(FrontCameraFound);
Parameters parameters = mCamera.getParameters();
mCamera.setParameters(parameters);
mCamera.startPreview();
Camera.PictureCallback mCall = new Camera.PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
InputStream is;
Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length);
// set bitmap tp image view just to check
// if image capture proper, testing purpose
iv_image.setImageBitmap(bmp);
mCamera.stopPreview();
mCamera.release();
// mCamera = null;
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
String bal;
try{ ByteArrayOutputStream bao = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPEG, 90, bao);
byte [] ba = bao.toByteArray();
bal=Base64.encodeBytes(ba);
nameValuePairs.add(new BasicNameValuePair("image",bal));
}catch(Exception e){ Log.e("ERROR", "caught one "+ e.toString());}
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://sibot.bugs3.com/pic.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
}catch(Exception e){
Log.e("log_tag", "Error in http connection "+e.toString());
}
}
};
mCamera.takePicture(null, null, mCall);
}
}
private int getCameraID() {
Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
for (int camIdx = 0; camIdx < Camera.getNumberOfCameras(); camIdx++) {
Camera.getCameraInfo(camIdx, cameraInfo);
// for capture image from back camera
// If want to capture from front
// then change it to CAMERA_FACING_FRONT
if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK) {
try {
return camIdx;
} catch (RuntimeException e) {
}
}
}
return -1;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.img2"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="9" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.INTERNET" />
<uses-feature android:name="android.hardware.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.android.img2.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>`enter code here`
<activity android:name="com.android.img2.Base64" />
</application>
</manifest>
我的清单文件如下
public class MainActivity extends Activity {
Button btn;
ImageView img;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn=(Button) findViewById(R.id.button1);
img=(ImageView) findViewById(R.id.sv);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
CaptureImage(img);
}
});
}
private void CaptureImage( final ImageView iv_image) {
int FrontCameraFound = getCameraID();
if (FrontCameraFound != -1) {
final Camera mCamera = Camera.open(FrontCameraFound);
Parameters parameters = mCamera.getParameters();
mCamera.setParameters(parameters);
mCamera.startPreview();
Camera.PictureCallback mCall = new Camera.PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
InputStream is;
Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length);
// set bitmap tp image view just to check
// if image capture proper, testing purpose
iv_image.setImageBitmap(bmp);
mCamera.stopPreview();
mCamera.release();
// mCamera = null;
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
String bal;
try{ ByteArrayOutputStream bao = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPEG, 90, bao);
byte [] ba = bao.toByteArray();
bal=Base64.encodeBytes(ba);
nameValuePairs.add(new BasicNameValuePair("image",bal));
}catch(Exception e){ Log.e("ERROR", "caught one "+ e.toString());}
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://sibot.bugs3.com/pic.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
}catch(Exception e){
Log.e("log_tag", "Error in http connection "+e.toString());
}
}
};
mCamera.takePicture(null, null, mCall);
}
}
private int getCameraID() {
Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
for (int camIdx = 0; camIdx < Camera.getNumberOfCameras(); camIdx++) {
Camera.getCameraInfo(camIdx, cameraInfo);
// for capture image from back camera
// If want to capture from front
// then change it to CAMERA_FACING_FRONT
if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK) {
try {
return camIdx;
} catch (RuntimeException e) {
}
}
}
return -1;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.img2"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="9" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.INTERNET" />
<uses-feature android:name="android.hardware.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.android.img2.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>`enter code here`
<activity android:name="com.android.img2.Base64" />
</application>
</manifest>
即使包括了所有的权限,并确保我手机上的网络是打开的,我还是无法解决这个问题。任何帮助都将不胜感激。您可能希望在文本中更明确地回答您的确切问题。您提供的信息很好,但可能不完全清楚您在问什么;我得到了java.net.UnknownHostException:sibot.bugs3.com错误在添加了标记并在Logcat中看到后,我据此得出结论,错误出现在HttpResponse response response=httpclient.executehttpoppost;当我打开.php页面并发送da pic agen时,我发现该服务暂时不可用,服务器关闭了连接,没有发送任何数据。由于维护停机或容量问题,服务器暂时无法为您的请求提供服务。由于服务器负载过重,可能会暂时阻止从获取异常多页面的位置进行连接。给您带来的不便,我们深表歉意