2012-02-13 5 views
0

私は現在、RedLaser APIを利用したバーコードスキャンアプリを完成させる最終段階に入っています。しかし、イメージ内で領域を設定してバーコードを識別する場所を設定することができないという難点が1つあります。これは、完全なイメージからバーコードを識別し、私が設定したActiveRegionではないことを示します。RedLaser SetActiveRegion iPhone

は、私は私の正確なコードのインフロントを持っていないが、それは事実上、このsourceのカーボンコピーです:

(void) setPortraitLayout 
{ 
    // Set portrait 
    self.parentPicker.orientation = UIImageOrientationUp; 

    // Set the active scanning region for portrait mode 
    [self.parentPicker setActiveRegion:CGRectMake(0, 100, 320, 250)]; 

    // Animate the UI changes 
    CGAffineTransform transform = CGAffineTransformMakeRotation(0); 

    [UIView beginAnimations:@"rotateToPortrait" context:nil]; // Tell UIView we're ready to start animations. 
    [UIView setAnimationDelegate:self]; 
    [UIView setAnimationCurve: UIViewAnimationCurveLinear ]; 
    [UIView setAnimationDuration: 0.5]; 

    redlaserLogo.transform = transform; 

    //A visible frame to aim with 
    [self setActiveRegionFrame]; 

    [UIView commitAnimations]; // Animate! 
} 

(void) setActiveRegionFrame 
{ 
    //this just draws up a visible rectangle slightly smaller than supposed ActiveRegion 
    [_rectLayer setFrame:CGRectMake(self.parentPicker.activeRegion.origin.x - 50, self.parentPicker.activeRegion.origin.y - 50, self.parentPicker.activeRegion.size.width - 50, self.parentPicker.activeRegion.size.height - 50)]; 
    CGPathRef path = [self newRectPathInRect:_rectLayer.bounds]; 
    [_rectLayer setPath:path]; 
    CGPathRelease(path); 
    [_rectLayer needsLayout]; 
} 

誰でもマニュアル活性領域とRedLaserを設定した経験がありますか?私は3.1.0のiPhoneライブラリを使用しています(また、バグがあった場合に備えて最新の3.2.4も試しました)。

答えて

1

私はRedLaserのために働いています。また、SDK zipの「RedLaser SDKの使用」ファイルを参照することをお勧めします。

短い回答:ActiveRegionsは廃止されました。代わりにBarcodeResultクラスを使用してください。コマンドのページ6-9

答え:バーコードレスクラスには、スキャンされたすべてのバーコードの場所(NSValuesのNSArray)が含まれています。返された値が希望の地域にないすべての結果を無視するようにアプリに指示できます。

PDFから関連するテキスト:

は最後に、それぞれのバーコードは、私たちがバーコードを設置場所を示す、各NSValueがするCGPointですNSValuesのNSArrayのを、持っています。点の座標は、BarcodePickerControllerの境界と同じ座標系になります。配列の最初のポイントはバーコードの左上になり、2番目のポイントはバーコードの右上になります。バーコードが「上下逆さま」であると認識された場合、これらの点は画面上で右下に表示されます。また、デバイスの前面カメラを使用して認識するときにプレビューが反映されるため、ポイントは必ずしも時計回りの順番である必要はありません。配列には通常4つの点が含まれますが、それ以上のものもあれば少ないものも含まれます。

これらのポイントから生成されたパスは、バーコード全体をカバーしていない可能性があり、高さが1ピクセルでも幅が広い場合もあります。バーコードの位置は、バーコードが実際に認識されているフレームでのみ更新されるため、mostRecentScanTime以降は長くなるほどバーコードがカメラプレビューのその位置にある可能性は低くなります。部分認識法(いくつかの長いバーコードに使用され、ユーザがバーコードの各部分を指し、完全なコードを一緒にすることを可能にする)によって認識されるバーコードは、スキャンされるバーコードの最新の部分。

その他のご質問がある場合は、http://support.redlaser.com/からお問い合わせください。私たちの応答時間はかなり速いです。

+0

これは正しい道に私を導きます、ありがとう。その他のヘルパーコードは次のとおりです。 BOOL barcodeWithinRegion = true; for([foundCode barcodeLocation]のNSValue *キー){// // CGPointValuesの配列 \t CGPointポイント= [キーCGPointValue]; \t if(point.x <0 || point.x> 320) \t \t barcodeWithinRegion = false; \t if(point.y <50 || point.y> 200) \t \t barcodeWithinRegion = false; } (foundCode && barcodeWithinRegion){... – Wollan