2016-03-30 12 views
0

Ich habe ein einfaches Projekt, das nur die Kamera mit org.opencv.android.JavaCameraView zeigen.Klasse muss abstrakt erklärt werden oder implementieren abstrakte Methode

und ich erhalte diesen folgenden Fehler mit rot unterstrichen:

Class 'HelloVisionActivity' muss abstrakt deklariert werden oder implementieren abstrakte Methode 'onCameraViewStopped()' in CvCameraViewListener2'

auf public class HelloVisionActivity erstreckt Aktivität CvCameraViewListener2 implementiert

dies ein Teil meines Code ist:

public class HelloVisionActivity extends Activity implements CvCameraViewListener2 { 


private static final String TAG = "Example::HelloVisionWorld::Activity"; 
private CameraBridgeViewBase mOpenCvCameraView; 


public Mat onCameraFrame(CvCameraViewFrame inputFrame) { 


    return inputFrame.rgba(); 
} 



@Override 
protected void onCreate(Bundle savedInstanceState) { 
    Log.i(TAG, "called onCreate"); 

    super.onCreate(savedInstanceState); 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
    setContentView(R.layout.activity_hello_vision); 

    mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.HelloVisionView); 

    //Set the view as visible 
    mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE); 


    mOpenCvCameraView.setCvCameraViewListener(this); 
} 
@Override 
public void onResume() { 

    super.onResume(); 


    OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_8, this, mLoaderCallback); 
} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_hello_vision, menu); 
    return true; 
} 

private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { 
    @SuppressLint("LongLogTag") 
    @Override 

    public void onManagerConnected(int status) { 
     switch (status) { 

      case LoaderCallbackInterface.SUCCESS: { 
       Log.i(TAG, "OpenCV loaded successfully"); 
       mOpenCvCameraView.enableView(); 
      } 
      break; 
      default: { 
       super.onManagerConnected(status); 
      } 
      break; 
     } 
    } 
}; 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    int id = item.getItemId(); 


    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

Antwort

0

Diese Schnittstelle CvCameraViewListener2 hat eine Methode namens onCameraViewStopped() ... Sie es in der HelloVisionActivity Aktivität außer Kraft setzen müssen ..

Beispiel:

public class HelloVisionActivity extends Activity implements CvCameraViewListener2 { 

    private static final String TAG = "Example::HelloVisionWorld::Activity"; 
    private CameraBridgeViewBase mOpenCvCameraView; 

    public Mat onCameraFrame(CvCameraViewFrame inputFrame) { 

     return inputFrame.rgba(); 
    } 

@Override 
public void onCameraViewStopped(){ 
//your code here 
} 
0

Ich habe dieses Problem auch, und ich fand die Lösung heraus.

public class HelloVisionActivity extends Activity implements CvCameraViewListener2 { 


private static final String TAG = "Example::HelloVisionWorld::Activity"; 
private CameraBridgeViewBase mOpenCvCameraView; 
private Mat mRgba; //Insert this in your code 

Als nächstes fügen Sie den folgenden Code ein und Ihr Problem wird gelöst.

public void onCameraViewStarted(int width, int height) { 
    mRgba = new Mat(height, width, CvType.CV_8UC4); 
} 

@Override 
public void onCameraViewStopped(){ 
    mRgba.release(); 
} 
Verwandte Themen