【问题标题】:NativeScript error TS2554: Expected 1 arguments, but got 0;NativeScript 错误 TS2554:预期 1 个参数,但得到 0;
【发布时间】:2018-06-08 15:20:15
【问题描述】:

我尝试使用带有 NativeScript 的相机原生 API(“我不使用任何插件”),当我到达 takePicture 函数时,它给出了这个错误:

app/shared/camera/camera.service.ts(23,39):错误 TS2554:预期 1 个参数,但得到 0。app/shared/camera/camera.service.ts(23,84):错误 TS1005 : ',' 预期。

     import { Injectable} from '@angular/core';
     import * as permissions from 'nativescript-permissions';
     @Injectable()

     export class CameraService  {
       Camera:any; //Camera android.hardware.Camera instatiation
       camera:any;
       constructor() {
         let CAMERA = () => (android as any).Manifest.permission.CAMERA;
       let RECORD_AUDIO = () => (android as any).Manifest.permission.RECORD_AUDIO;
       let READ_EXTERNAL_STORAGE = () => (android as any).Manifest.permission.READ_EXTERNAL_STORAGE;
       let WRITE_EXTERNAL_STORAGE = () => (android as any).Manifest.permission.WRITE_EXTERNAL_STORAGE;
         this.Camera=android.hardware.Camera; 
         this.camera = android.hardware.Camera;
        }  
       CamList = [];
       //satrt up the camera
       startup(cameraID:number){
try{
         this.Camera.open(cameraID);
         this.Camera.startPreview();
         this.Camera.takePicture(null,null,new android.hardware.Camera.PictureCallback(){
            onPictureTaken:async (data,camera)=>{
              this.releasecamera();
              this.sendpicture(data);
            }
          });
         }catch(ex){
           console.log('start up error',ex);
}
      }
       //send picture
     sendpicture(data){
let bitmap = android.graphics.BitmapFactory.decodeByteArray(data,0,data.length);
let outputStream = new java.io.ByteArrayOutputStream();
bitmap.compress(android.graphics.Bitmap.CompressFormat.JPEG, 100, outputStream);
let img=[];
img.push({image:true,buffer:outputStream.toByteArray()});

      }
      //liste all cameras avlaible on the device
      getcameras(){
       // let Camera:any = android.hardware.Camera ; 
        let numberOfcams = this.Camera.getNumberOfCameras();                                  //android.hardware.Camera.getNumberOfCameras();

for(let i = 0 ; i<numberOfcams;i++){
          let camera = new this.Camera.CameraInfo();
          this.Camera.getCameraInfo(i,camera);
          if(camera.facing == this.Camera.CameraInfo.CAMERA_FACING_FRONT)
            {
              //let ca = "{name:'front' , id:"+i+"}";
              this.CamList.push({name:'front',id:i});
            }else if(camera.facing == this.Camera.CameraInfo.CAMERA_FACING_BACK)
            {
             // let ca = "{name:'back' , id:"+i+"}";
              this.CamList.push({name:'back',id:i});
            }  else{
              this.CamList.push({name:'other',id:i});
            }
            console.dir(this.Camera.getCameraInfo(i,camera));
}
//console.dir(this.CamList);

return this.CamList ;
      }
       //release camera
    releasecamera(){
if(this.camera != null ){
  this.camera.stopPreview();
  this.camera.realase();
  this.camera=null;
}
       }


     }

【问题讨论】:

  • 作为错误状态,您缺少一个参数。请阅读文档
  • 问题是我想知道缺少哪个参数
  • 哪行代码出错了
  • 这一行 this.Camera.takePicture(null,null,new android.hardware.Camera.PictureCallback(){
  • 为什么不直接使用插件呢?它在那里是有原因的

标签: android angular typescript nativescript angular2-nativescript


【解决方案1】:

这个呢?

        this.Camera.takePicture(null, null, new android.hardware.Camera.PictureCallback({
            onPictureTaken: async (data, camera) => {
                this.releasecamera();
                this.sendpicture(data);
            }
        }));

不要犹豫,看看关于扩展接口的文档documentation about extending interfaces

【讨论】:

  • 我没有评论我是如何在几个小时内无法意识到这一点的,谢谢
猜你喜欢
  • 1970-01-01
  • 2021-07-29
  • 2021-08-22
  • 1970-01-01
  • 2020-05-19
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多