在android中,如何将回调从类发送到活动?
我有一个ScanActivity,我从中实例化了一个类(预览),该类单击图像并在Camera对象上设置回调。如果回调操作成功,我想返回ScanActivity。例:在android中,如何将回调从类发送到活动?,android,android-intent,android-activity,Android,Android Intent,Android Activity,我有一个ScanActivity,我从中实例化了一个类(预览),该类单击图像并在Camera对象上设置回调。如果回调操作成功,我想返回ScanActivity。例: class Preview extends SurfaceView implements SurfaceHolder.Callback{ Camera mCamera; Preview(){} //constructor to initialize mCamera public void start(){
class Preview extends SurfaceView implements SurfaceHolder.Callback{
Camera mCamera;
Preview(){} //constructor to initialize mCamera
public void start(){
mCamera.startPreview();
mCamera.setPreviewCallback(new Camera.PreviewCallback() {
public void onPreviewFrame(byte[] data, Camera camera) {
/*
if(scanSuccessful){
return to activity
}
*/
}
}
}
class ScanActivity extends Activity{
public void onCreate(){
Preview p = new Preview();
preview.start();
}
}
如果扫描成功,我想从回调返回调用活动(ScanActivity)。我知道广播接收机是实现它的一种方法,还有其他方法吗?使用它们的优点和缺点是什么?一些想法,不一定是完整的列表-您可能希望:
然而,我认为第4点作为Android SDK的新补充是一条路要走。我也反对第3点——据我所知,这将在UI线程上运行,并且在繁重的工作情况下——可能会导致应用程序无响应。是正确的。您需要一个允许将结果发送到父活动的方法。我认为你将有助于一个机制也 代码:
public interface PreviewCallback {
void onPreviewFrame(byte[] data, Camera camera);
}
class Preview extends SurfaceView implements SurfaceHolder.Callback{
Camera mCamera;
PreviewCallback listener;
Preview(){} //constructor to initialize mCamera
public void setCallback(PreviewCallback callback) {
listener = callback;
}
public void start(){
mCamera.startPreview();
mCamera.setPreviewCallback(new Camera.PreviewCallback() {
public void onPreviewFrame(byte[] data, Camera camera) {
listener.onPreviewFrame(data,camera);
}
}
}
class ScanActivity extends Activity implements PreviewCallback {
public void onCreate(){
Preview p = new Preview();
preview.setCallback(this);
preview.start();
}
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
// do your work
}
}
我不想在活动之间传递数据,我知道如何实现这一点。我想把控制权从一个普通类传递给一个活动。我编辑了这个问题,以便更好地解释它。