【发布时间】:2018-06-23 17:45:54
【问题描述】:
我是安卓新手。我正在尝试开发 android 应用程序,我在 youtube 中寻找教程。我遵循 youtube Analyze image 上的 android 教程中的每一步。但是由于我是开发android的初学者,所以在运行应用程序时遇到错误,它会自动停止。
有人愿意帮忙吗?在此先感谢
这是我的代码
public class MainActivity extends AppCompatActivity {
public VisionServiceClient visionServiceClient = new VisionServiceRestClient("96a818770f0e45dfa09fc5cce0f1ce1e");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Bitmap mBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.apple);
ImageView imageView = (ImageView)findViewById(R.id.imageView);
Button btnIdentify = (Button)findViewById(R.id.btnIdentify);
imageView.setImageBitmap(mBitmap);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
mBitmap.compress(Bitmap.CompressFormat.JPEG, 100,outputStream);
final ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
btnIdentify.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v){
final AsyncTask<InputStream,String,String> visionTask = new AsyncTask<InputStream, String, String>() {
ProgressDialog mDialog = new ProgressDialog(MainActivity.this);
@Override
protected String doInBackground(InputStream... params) {
try {
publishProgress("Recognizing...");
String[] features = {"Description"};
String[] details = {};
AnalysisResult result = visionServiceClient.analyzeImage(params[0], features, details);
String strResult = new Gson().toJson(result);
return strResult;
} catch (Exception e) {
return null;
}
}
@Override
protected void onPreExecute() {
mDialog.show();
}
@Override
protected void onPostExecute(String s) {
mDialog.dismiss();
AnalysisResult result = new Gson().fromJson(s,AnalysisResult.class);
TextView textView = (TextView)findViewById(R.id.txtDescription);
StringBuilder stringBuilder = new StringBuilder();
for(Caption caption:result.description.captions)
{
stringBuilder.append(caption.text);
}
textView.setText(stringBuilder);
}
@Override
protected void onProgressUpdate(String... values) {
mDialog.setMessage(values[0]);
}
};
visionTask.execute(inputStream);
}
});
}
这是我遇到的错误
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.dev.sample, PID: 455
java.lang.NullPointerException: Attempt to read from field 'com.microsoft.projectoxford.vision.contract.Description com.microsoft.projectoxford.vision.contract.AnalysisResult.description' on a null object reference
at com.dev.sample.MainActivity$1$1.onPostExecute(MainActivity.java:81)
at com.dev.sample.MainActivity$1$1.onPostExecute(MainActivity.java:50)
at android.os.AsyncTask.finish(AsyncTask.java:651)
at android.os.AsyncTask.access$500(AsyncTask.java:180)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:7325)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
【问题讨论】:
标签: java android microsoft-cognitive vision