2012-01-26 8 views
1

이상한 문제가 있습니다. 내 asyncTask 조작이 처리되지 않은 예외로 갑자기 종료되고 있습니다. 약 45 %의 작업이 완료되면 종료가 발생합니다. 여기Android AsyncTask doInBackground 작업이 처리되지 않은 예외로 갑자기 중지됨

내 로그 캣

01-26 12:13:48.216: I/System.out(4421): success 
01-26 12:13:48.386: I/System.out(4421): success 
01-26 12:13:48.576: I/System.out(4421): success 
01-26 12:13:48.616: D/dalvikvm(4421): GC_CONCURRENT freed 473K, 48% free 3256K/6215K, external 0K/0K, paused 3ms+4ms 
01-26 12:13:48.806: I/System.out(4421): success 
01-26 12:13:48.806: W/dalvikvm(4421): threadid=9: thread exiting with uncaught exception (group=0x40018560) 
01-26 12:13:48.806: E/AndroidRuntime(4421): FATAL EXCEPTION: AsyncTask #1 
01-26 12:13:48.806: E/AndroidRuntime(4421): java.lang.RuntimeException: An error occured while executing doInBackground() 
01-26 12:13:48.806: E/AndroidRuntime(4421):  at android.os.AsyncTask$3.done(AsyncTask.java:200) 
01-26 12:13:48.806: E/AndroidRuntime(4421):  at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274) 
01-26 12:13:48.806: E/AndroidRuntime(4421):  at java.util.concurrent.FutureTask.setException(FutureTask.java:125) 
01-26 12:13:48.806: E/AndroidRuntime(4421):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308) 
01-26 12:13:48.806: E/AndroidRuntime(4421):  at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
01-26 12:13:48.806: E/AndroidRuntime(4421):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088) 
01-26 12:13:48.806: E/AndroidRuntime(4421):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581) 
01-26 12:13:48.806: E/AndroidRuntime(4421):  at java.lang.Thread.run(Thread.java:1019) 
01-26 12:13:48.806: E/AndroidRuntime(4421): Caused by: java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0 
01-26 12:13:48.806: E/AndroidRuntime(4421):  at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257) 
01-26 12:13:48.806: E/AndroidRuntime(4421):  at java.util.ArrayList.get(ArrayList.java:311) 
01-26 12:13:48.806: E/AndroidRuntime(4421):  at android.gesture.Instance.temporalSampler(Instance.java:91) 
01-26 12:13:48.806: E/AndroidRuntime(4421):  at android.gesture.Instance.createInstance(Instance.java:76) 
01-26 12:13:48.806: E/AndroidRuntime(4421):  at android.gesture.GestureStore.addGesture(GestureStore.java:158) 
01-26 12:13:48.806: E/AndroidRuntime(4421):  at android.gesture.GestureLibrary.addGesture(GestureLibrary.java:68) 
01-26 12:13:48.806: E/AndroidRuntime(4421):  at com.android.pack.TestActivity.saveGesture(TestActivity.java:467) 
01-26 12:13:48.806: E/AndroidRuntime(4421):  at com.android.pack.TestActivity$A.doInBackground(TestActivity.java:102) 
01-26 12:13:48.806: E/AndroidRuntime(4421):  at com.android.pack.TestActivity$A.doInBackground(TestActivity.java:1) 
01-26 12:13:48.806: E/AndroidRuntime(4421):  at android.os.AsyncTask$2.call(AsyncTask.java:185) 
01-26 12:13:48.806: E/AndroidRuntime(4421):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306) 
01-26 12:13:48.806: E/AndroidRuntime(4421):  ... 4 more 
01-26 12:13:49.356: E/WindowManager(4421): Activity com.android.pack.TestActivity has leaked window [email protected] that was originally added here 
01-26 12:13:49.356: E/WindowManager(4421): android.view.WindowLeaked: Activity com.android.pack.TestActivity has leaked window [email protected] that was originally added here 
01-26 12:13:49.356: E/WindowManager(4421): at android.view.ViewRoot.<init>(ViewRoot.java:259) 
01-26 12:13:49.356: E/WindowManager(4421): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148) 
01-26 12:13:49.356: E/WindowManager(4421): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91) 
01-26 12:13:49.356: E/WindowManager(4421): at android.view.Window$LocalWindowManager.addView(Window.java:465) 
01-26 12:13:49.356: E/WindowManager(4421): at android.app.Dialog.show(Dialog.java:241) 
01-26 12:13:49.356: E/WindowManager(4421): at com.android.pack.TestActivity.addgestures(TestActivity.java:159) 
01-26 12:13:49.356: E/WindowManager(4421): at com.android.pack.TestActivity.onOptionsItemSelected(TestActivity.java:404) 
01-26 12:13:49.356: E/WindowManager(4421): at android.app.Activity.onMenuItemSelected(Activity.java:2205) 
01-26 12:13:49.356: E/WindowManager(4421): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:776) 
01-26 12:13:49.356: E/WindowManager(4421): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:143) 
01-26 12:13:49.356: E/WindowManager(4421): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:855) 
01-26 12:13:49.356: E/WindowManager(4421): at com.android.internal.view.menu.IconMenuView.invokeItem(IconMenuView.java:532) 
01-26 12:13:49.356: E/WindowManager(4421): at com.android.internal.view.menu.IconMenuItemView.performClick(IconMenuItemView.java:122) 
01-26 12:13:49.356: E/WindowManager(4421): at android.view.View$PerformClick.run(View.java:9107) 
01-26 12:13:49.356: E/WindowManager(4421): at android.os.Handler.handleCallback(Handler.java:587) 
01-26 12:13:49.356: E/WindowManager(4421): at android.os.Handler.dispatchMessage(Handler.java:92) 
01-26 12:13:49.356: E/WindowManager(4421): at android.os.Looper.loop(Looper.java:130) 
01-26 12:13:49.356: E/WindowManager(4421): at android.app.ActivityThread.main(ActivityThread.java:3835) 
01-26 12:13:49.356: E/WindowManager(4421): at java.lang.reflect.Method.invokeNative(Native Method) 
01-26 12:13:49.356: E/WindowManager(4421): at java.lang.reflect.Method.invoke(Method.java:507) 
01-26 12:13:49.356: E/WindowManager(4421): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847) 
01-26 12:13:49.356: E/WindowManager(4421): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605) 
01-26 12:13:49.356: E/WindowManager(4421): at dalvik.system.NativeStart.main(Native Method) 
01-26 12:14:04.836: I/Process(4421): Sending signal. PID: 4421 SIG: 9 

이며, 여기에 AsyncTask를 클래스

class A extends AsyncTask<File[],Integer,Void> 
     { 
      private Context cnt; 
       int count=0; 
      @Override 
      protected void onPreExecute() { 

      } 
      A(Context context) 
      { 
       cnt=context; 
      } 

      protected Void doInBackground(File[]... params) { 
       // TODO Auto-generated method stub 
       File[] newfiles=params[0]; 
       File[] temp=null; 
       int progress=0; 
       float dircnt=0; 
       int numberofdir=newfiles.length; 
       for(File b:newfiles) 
       { 


        count=0; 
        dirname=b.getName(); 
        if(b.isDirectory()) 
        { 

         temp=b.listFiles(); 
        } 
        for(File a:temp) 
        { 
         gest=dotask.batchprocess(a.getPath()); 
         if(gest!=null) 
          System.out.println("success"); 
         String name=dirname+"_"+count; 
         saveGesture(name, gest); 
         count++; 

        } 
        dircnt=dircnt+1; 
        progress=(int)((dircnt/numberofdir)*100); 
        try { 
         Thread.sleep(60); 
         publishProgress(progress); 
        } catch (InterruptedException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 



       } 


       return null; 
      } 
      @Override 
      protected void onProgressUpdate(Integer... values) { 
       // increment progress bar by progress value 
       pd.setProgress(values[0]); 
       pd.setMessage("completed "+dirname); 


     } 
      protected void onPostExecute() { 
       pd.hide(); 
       pd=null; 
      } 

}

에게하고 여기에 AsyncTask를 객체를 호출하고

그것을 실행하는 방법
public void addgestures() 
     { 
      cView.postInvalidate(); 
      dotask.setH(cView.getH()); 
      dotask.setW(cView.getW()); 

      count=0; 
      files=null; 
      /*if(dir.isDirectory()) 
      { 
       files=dir.listFiles(); 
      }*/ 
      files=dir.listFiles(); 
      for(int i=0;i<files.length;i++) 
      { 
       System.out.println(files[i].getPath()); 
      } 
      pd = new ProgressDialog(this); 
       pd.setMessage("Matching progress"); 
       pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
       pd.setMax(100); 
       pd.setCancelable(false); 
       pd.setProgress(0); 
       pd.show(); 



      A a=new A(this); 
      a.execute(files); 



     } 

작업의 약 40 %가 성공적으로 완료되었으므로 나머지 프로그램에는 오류가 없습니다. 따라서 나머지 프로그램을 업로드하지 마십시오.

**here is the TESTACTIVITY CLASS** 

package com.android.pack; 


import java.io.File; 
import java.net.URISyntaxException; 



import android.app.Activity; 
import android.app.AlertDialog; 
import android.app.ProgressDialog; 
import android.content.Context; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.gesture.Gesture; 
import android.gesture.GestureLibraries; 
import android.gesture.GestureLibrary; 
import android.net.Uri; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.os.Environment; 
import android.os.Handler; 
import android.os.Message; 
import android.text.Editable; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.EditText; 
import android.widget.LinearLayout; 
import android.widget.Toast; 


public class TestActivity extends Activity { 
    /** Called when the activity is first created. */ 
    int height; 
    int weight; 
    private ProgressDialog pd=null; 
    customview cView; 
    String path=""; 
    String pathchk=""; 
    String temp=""; 
    String name=null; 
    float pathSmooth[]; 
    private File mStoreFile; 
    Gesture gest; 
    File dir; 
    String dirname; 
    File[] files; 
    int count; 
    int Height; 
    int Weight; 
    task dotask; 
    Context ct; 
    private static GestureLibrary sStore=null; 


    private static final int FILE_SELECT_CODE = 0; 


     public void perform() // 
     { 
      cView.set_file(pathchk); 
      cView.postInvalidate(); 
     } 
     class A extends AsyncTask<File[],Integer,Void> 
     { 
      private Context cnt; 
       int count=0; 
      @Override 
      protected void onPreExecute() { 

      } 
      A(Context context) 
      { 
       cnt=context; 
      } 

      protected Void doInBackground(File[]... params) { 
       // TODO Auto-generated method stub 
       File[] newfiles=params[0]; 
       File[] temp=null; 
       int progress=0; 
       float dircnt=0; 
       int numberofdir=newfiles.length; 
       for(File b:newfiles) 
       { 


        count=0; 
        dirname=b.getName(); 
        if(b.isDirectory()) 
        { 

         temp=b.listFiles(); 
        } 
        for(File a:temp) 
        { 
         gest=dotask.batchprocess(a.getPath()); 
         if(gest!=null) 
          System.out.println("success"); 
         String name=dirname+"_"+count; 
         saveGesture(name, gest); 
         count++; 

        } 
        dircnt=dircnt+1; 
        progress=(int)((dircnt/numberofdir)*100); 
        try { 
         Thread.sleep(60); 
         publishProgress(progress); 
        } catch (InterruptedException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 



       } 


       return null; 
      } 
      @Override 
      protected void onProgressUpdate(Integer... values) { 
       // increment progress bar by progress value 
       pd.setProgress(values[0]); 
       pd.setMessage("completed "+dirname); 


     } 
      protected void onPostExecute() { 
       pd.hide(); 
       pd=null; 
      } 
     } 
     public void addgestures() 
     { 
      cView.postInvalidate(); 
      dotask.setH(cView.getH()); 
      dotask.setW(cView.getW()); 

      count=0; 
      files=null; 
      /*if(dir.isDirectory()) 
      { 
       files=dir.listFiles(); 
      }*/ 
      files=dir.listFiles(); 
      for(int i=0;i<files.length;i++) 
      { 
       System.out.println(files[i].getPath()); 
      } 
      pd = new ProgressDialog(this); 
       pd.setMessage("Matching progress"); 
       pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
       pd.setMax(100); 
       pd.setCancelable(false); 
       pd.setProgress(0); 
       pd.show(); 



      A a=new A(this); 
      a.execute(files); 



     } 





     public void showFileChooser() { 
      Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
      // File file = new File("/sdcard"); 
      intent.setType("file://*"); 

      intent.addCategory(Intent.CATEGORY_OPENABLE); 

      try { 
       startActivityForResult(
         Intent.createChooser(intent, "Select a File to Upload"), 
         FILE_SELECT_CODE); 

      } catch (android.content.ActivityNotFoundException ex) { 
       // Potentially direct the user to the Market with a Dialog 
       Toast.makeText(this, "Please install a File Manager.", 
         Toast.LENGTH_SHORT).show(); 
      } 
     } 
      public void smoothPoint() 
      { 

       float pathScale[]=cView.getPathSmooth(); 
       int pi;    // Index over all the points in the trace 

       int ti;    // Index over all the traces of a tracegroup 
       float Xavg,Yavg; 
       //int numTraces=getNumTraces(); 
       int numTraces=1; 
       int stopCount=0; 
       int numPoints =(pathScale.length)/2; 
       float xsd,ysd; 
       int count1=1,count2=1; 
       float m2=0,m1=0; 
       float sumX=0, sumY=0;   //partial sum 
       float Xchannel []=new float[numPoints*2]; 
       float Xdist=0,Ydist=0; 
       float Ychannel []=new float[numPoints*2]; 
       float nXchannel[]= new float[numPoints*2*2]; 
       float nYchannel[]=new float[numPoints*2*2]; 
       int finalCount=1; 
       float n1Xchannel[]= new float[numPoints*4*2]; 
       float n1Ychannel[]=new float[numPoints*4*2]; 
       float xfinal[] = new float[numPoints*4*2]; 
       float yfinal[]= new float[numPoints*4*2]; 
       int valid[]=new int[numPoints]; 
       Log.v("number of points",numPoints+""); 
       for(int i=0;i<numPoints;i++) 
       { 
        //valid[i]=1; 
        Xchannel[i]=pathScale[i*2]; 
        Ychannel[i]=pathScale[i*2+1]; 
       } 
       for(ti=0;ti<numTraces;ti++) 
       { 
        sumX=sumY=0; 
        for(pi=0;pi<numPoints-1;pi++) 
        { 
         sumX+=Math.abs((Math.abs(Xchannel[pi+1])-Math.abs(Xchannel[pi]))); 
         sumY+=Math.abs((Math.abs(Ychannel[pi+1])-Math.abs(Ychannel[pi]))); 
        } 
       } 
       for(pi=1;pi<numPoints-1;pi++) 
       { 
        m1=(Ychannel[pi]-Ychannel[pi-1])/(Xchannel[pi]-Xchannel[pi-1]); 
        m2=(Ychannel[pi+1]-Ychannel[pi])/(Xchannel[pi+1]-Xchannel[pi]); 
        if(m1*m2<0) 
        { 
         valid[pi]=0; 
         stopCount++; 

        } 

       } 


       nXchannel[0]=Xchannel[0]; 
       nYchannel[0]=Ychannel[0]; 
       for(pi=1;pi<numPoints;pi++) 
       { 
        nXchannel[pi*2-1]=(Xchannel[pi]+Xchannel[pi-1])/2; 

        nYchannel[pi*2-1]=(Ychannel[pi]+Ychannel[pi-1])/2; 
        //System.out.print(" \n mid x and y "+nXchannel[pi*2-1]+nYchannel[pi*2-1]); 
        nXchannel[pi*2]=Xchannel[pi]; 

        nYchannel[pi*2]=Ychannel[pi]; 
        count1+=2; 
       } 
       //System.out.println("new array... "); 
       n1Xchannel[0]=nXchannel[0]; 
       n1Ychannel[0]=nYchannel[0]; 
       for(pi=1;pi<count1;pi++) 
       { 
        n1Xchannel[pi*2-1]=(nXchannel[pi]+nXchannel[pi-1])/2; 

        n1Ychannel[pi*2-1]=(nYchannel[pi]+nYchannel[pi-1])/2; 
        //System.out.print(" \n mid x and y "+n1Xchannel[pi*2-1]+n1Ychannel[pi*2-1]); 
        n1Xchannel[pi*2]=nXchannel[pi]; 
        count2+=2; 
        n1Ychannel[pi*2]=nYchannel[pi]; 

       } 
       Log.v("Count1",count1+""); 
       Log.v("Count2",count2+""); 
       xfinal[0]=n1Xchannel[0]; 
       yfinal[0]=n1Ychannel[0]; 
       Xavg=sumX/(numPoints -1); 
       Log.v("finalCount",finalCount+""); 
       Log.v("Xavg",sumX+""); 
       Yavg=sumY/(numPoints-1) ; 

       for(pi=1;pi<count2-1;pi++) 
       { 

        Xdist=Math.abs((Math.abs(n1Xchannel[pi])-Math.abs(xfinal[finalCount-1]))); 
        Ydist=Math.abs((Math.abs(n1Ychannel[pi])-Math.abs(yfinal[finalCount-1]))); 
         if(Xdist>=Xavg||Ydist>=Yavg) 
         { 
          xfinal[finalCount]=n1Xchannel[pi]; 
          yfinal[finalCount++]=n1Ychannel[pi]; 
        } 


       } 
       pathSmooth=new float[finalCount*2]; 
       for(pi=0;pi<finalCount;pi++) 
       { 
         pathSmooth[pi*2] = xfinal[pi]; 
         pathSmooth[pi*2+1] = yfinal[pi]; 
        //pnts.get(pi).x=(int) nXchannel[pi]; 
        //pnts.get(pi).y=(int) nYchannel[pi]; 
        ////System.out.println("x "+(int)nXchannel[pi]+ " and y "+(int)nYchannel[pi]); 
       } 

       cView.setPathSmooth(pathSmooth); 





     } 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    { 
      switch (requestCode) { 
       case FILE_SELECT_CODE: 
       if (resultCode == RESULT_OK) { 
        // Get the Uri of the selected file 
        Uri uri = data.getData(); 
        Log.v("check", "File Uri: " + uri.toString()); 
        // Get the path 

        try { 
         path = FileUtils.getPath(this, uri); 
         pathchk=path.substring(12); 
         perform(); 



        } catch (URISyntaxException e) { 
         // TODO Auto-generated catch block 
         Log.v("error", "File Path: "+pathchk); 
        } 
        Log.v("check", "File Path: "+path); 
        // Get the file instance 
        // File file = new File(path); 
        // Initiate the upload 
       }   
       break; 
       case 1: 
        if(resultCode==RESULT_OK) 
        { 
          Uri uri=data.getData(); 
          dir=new File(uri.getPath()); 
          dirname=dir.getName(); 
          //addgestures(); 

        } 
        break; 
      } 

     super.onActivityResult(requestCode, resultCode, data); 
     } 
    @Override 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     cView = (customview)findViewById(R.id.customview1);   
     LinearLayout ll = new LinearLayout(this); 
     ll.setOrientation(LinearLayout.VERTICAL); 
     mStoreFile= new File(Environment.getExternalStorageDirectory(), "gestures"); 
     if (sStore == null) { 
      sStore = GestureLibraries.fromFile(mStoreFile); 
     } 
     dotask=new task(); 

     //select=(Button)findViewById(R.id.button1);  
    } 
    public boolean onCreateOptionsMenu(Menu menu) 
    { 
    //call the base class to include system menus 
     super.onCreateOptionsMenu(menu); 
     menu.add(0,1,0,"Open File"); // title 
     menu.add(0,2,1,"Smoothen"); 
     menu.add(0,3,2,"add to gesture library"); 
     menu.add(0,4,3,"Assign a name"); 
     menu.add(0,5,4,"select a folder"); 
     menu.add(0,6,5,"Exit"); 
    //It is important to return true to see the menu 
    return true; 
    } 
    public boolean onOptionsItemSelected(MenuItem item) { 

     // Handle item selection 
     switch (item.getItemId()) { 
     case 1: 
      showFileChooser(); 
      return true; 
     case 2: 
      smoothPoint(); 
      return true; 
     case 3: 

      /*if(name.length()<1) 
       Toast.makeText(getApplicationContext(), "Give a name to the gesture ist", Toast.LENGTH_LONG).show(); 
      else 
      { 
       gest=cView.batchprocess(pathchk); 
       saveGesture(name, gest); 
      }*/ 
      addgestures(); 
      return true; 

     case 4: 
      nameDialog(); 
      return true; 
     case 5: 
      Intent intent = new Intent("org.openintents.action.PICK_DIRECTORY"); 
      intent.setData(Uri.parse("file:///sdcard")); 
      intent.putExtra("org.openintents.extra.TITLE", "Please select a folder"); 
      intent.putExtra("org.openintents.extra.BUTTON_TEXT", "Use this folder"); 
      startActivityForResult(intent, 1); 
      return true; 
     case 6: 
      Toast.makeText(getApplicationContext(), "exiting", Toast.LENGTH_LONG).show(); 
      System.exit(1); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
     } 
    } 
    public void nameDialog() 
    { 
     AlertDialog.Builder alert = new AlertDialog.Builder(this); 

     alert.setTitle("Title"); 
     alert.setMessage("Message"); 

     // Set an EditText view to get user input 
     final EditText input = new EditText(this); 
     alert.setView(input); 

     alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton) { 
     name = input.getText().toString(); 
     //Log.d("name",name); 
     check(); 
      // Do something with value! 
      } 
     }); 

     alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 
      // Canceled. 
      } 
     }); 

     alert.show(); 
    } 
    public static GestureLibrary get() 
    { 
     return sStore; 
    } 
    public void check() 
    { 
     if(name.length()<1) 
      Toast.makeText(this,"No name is set for this gesture",Toast.LENGTH_SHORT).show(); 
     else 
      Toast.makeText(this,"GESTURE NAME IS "+name,Toast.LENGTH_SHORT).show(); 
    } 
    public void saveGesture(String name,Gesture gest) 
    { 
     final GestureLibrary store = get(); 
     store.addGesture(name, gest); 
     store.save(); 

    } 

} 
+0

로그 예외에 따라 TestActivity.saveGesture 메서드에서 발생하는 코드를 추가 할 수 있습니까? –

+0

ok TestActivity를 추가하고 있습니다. –

+0

OptionsItemSelected 사례 3에서 addgestures 메서드를 호출합니다. –

답변

0

디렉토리가 비어있는 사용 사례를 처리합니까? 아마 거기에 실패했을 수도 있습니다 - 경계 밖 예외를 얻는 것

+0

아니요.이 경우를 처리하지는 못했지만 비어있는 디렉토리가 없습니다. 어쨌든 저는이 경우를 만들고 있습니다! –

+0

오류가없는 것 같습니다. 빈 폴더가 없다고 했으므로 –

0

Instance.java에 대한 코드는 여기에서 보았습니다 : Instance.java.

코드는 다음 줄에 실패

float[] pts = GestureUtils.temporalSampling(gesture.getStrokes().get(0), SEQUENCE_SAMPLE_SIZE); 

당신이 추가하는 제스처처럼 보이는

에는 스트로크가 없습니다 그것이 의미하는 것은 무엇 (I 제스처에 대해 아무 생각이 없음)하고는 IndexOutOfBounds 예외가 발생합니다. 아마 그게 도움이 ...

+0

gesture.and temporalSampling을 만들면 인스턴스 객체가 자동으로 만들어집니다. –

+0

파일에서 제스처를 읽지 않습니까? 읽는 데이터에 문제가있을 수 있습니다. – smichak

+0

예! 제스처 라이브러리에 저장하고있는 x 및 y 좌표와 제스처가 포함 된 파일에서 제스처를 읽습니다. –

관련 문제