Android Open Source - craftar-example-android-image-recognition Recognition Finder Activity






From Project

Back to project page craftar-example-android-image-recognition.

License

The source code is released under:

MIT License

If you think the Android project craftar-example-android-image-recognition listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

// com.craftar.craftarexamplesir is free software. You may use it under the MIT license, which is copied
// below and available at http://opensource.org/licenses/MIT
///*w ww .  ja  v a2s  .c o m*/
// Copyright (c) 2014 Catchoom Technologies S.L.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
// Software, and to permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.

package com.craftar.craftarexamplesir;

import java.util.ArrayList;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast;

import com.craftar.CraftARActivity;
import com.craftar.CraftARCamera;
import com.craftar.CraftARCameraView;
import com.craftar.CraftARCloudRecognition;
import com.craftar.CraftARCloudRecognitionError;
import com.craftar.CraftARImage;
import com.craftar.CraftARImageHandler;
import com.craftar.CraftARItem;
import com.craftar.CraftARResponseHandler;
import com.craftar.CraftARSDK;

public class RecognitionFinderActivity extends CraftARActivity implements CraftARResponseHandler,CraftARImageHandler {

  private final String TAG = "CraftARTrackingExample";
  private final static String COLLECTION_TOKEN="craftarexamples1";
  
  private View mScanningLayout;
  
  CraftARCamera mCamera;
  
  CraftARCloudRecognition mCloudRecognition;
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
  }
    
  @Override
  public void onPostCreate() {
    
    View mainLayout= (View) getLayoutInflater().inflate(R.layout.activity_recognition_finder, null);
    CraftARCameraView cameraView = (CraftARCameraView) mainLayout.findViewById(R.id.camera_preview);
    super.setCameraView(cameraView);
    setContentView(mainLayout);
    
    mScanningLayout = findViewById(R.id.layout_scanning);
    
    //Initialize the SDK. From this SDK, you will be able to retrieve the necessary modules to use the SDK (camera, tracking, and cloud-recgnition)
    CraftARSDK.init(getApplicationContext(),this);
    
    //Get the camera to be able to do single-shot (if you just use finder-mode, this is not necessary)
    mCamera= CraftARSDK.getCamera();
    mCamera.setImageHandler(this); //Tell the camera who will receive the image after takePicture()
    
    //Setup the finder-mode: Note! PRESERVE THE ORDER OF THIS CALLS
    mCloudRecognition= CraftARSDK.getCloudRecognition();//Obtain the cloud recognition module
    mCloudRecognition.setResponseHandler(this); //Tell the cloud recognition who will receive the responses from the cloud
    mCloudRecognition.setCollectionToken(COLLECTION_TOKEN); //Tell the cloud-recognition which token to use from the finder mode
    
    //Start finder mode
    mCloudRecognition.startFinding();
    
    mCloudRecognition.connect(COLLECTION_TOKEN);
    
  }
  
  @Override
  public void searchCompleted(ArrayList<CraftARItem> results) {
    mScanningLayout.setVisibility(View.GONE);
    if(results.size()==0){
    // Nothing found 
    } else {
      CraftARItem item = results.get(0);
      if (!item.isAR()) {
        Intent launchBrowser = new Intent(Intent.ACTION_VIEW, Uri.parse(item.getUrl()));
        startActivity(launchBrowser);
        return;
      }else{
        Toast.makeText(getBaseContext(),"Found item:"+item.getItemName(),Toast.LENGTH_SHORT).show();
      }
    }
    mScanningLayout.setVisibility(View.VISIBLE);
  }  
  @Override
  public void connectCompleted(){
    Log.i(TAG,"Collection token is valid");
  }
  
  @Override
  public void requestFailedResponse(int requestCode,
      CraftARCloudRecognitionError responseError) {
    Log.d(TAG,"requestFailedResponse");    
  }

  //Callback received for SINGLE-SHOT only (after takePicture).
  @Override
  public void requestImageReceived(CraftARImage image) {
    mCloudRecognition.searchWithImage(COLLECTION_TOKEN,image);
  }
  @Override
  public void requestImageError(String error) {
    //Take picture failed
  }

  

}




Java Source Code List

com.craftar.craftarexamplesir.HowToActivity.java
com.craftar.craftarexamplesir.LaunchersActivity.java
com.craftar.craftarexamplesir.RecognitionFinderActivity.java
com.craftar.craftarexamplesir.RecognitionOnlyActivity.java
com.craftar.craftarexamplesir.SplashScreenActivity.java
com.craftar.craftarexamplesir.WebActivity.java
com.craftar.fragmentexample.CraftarCameraFragment.java
com.craftar.fragmentexample.EmptyFragment.java
com.craftar.fragmentexample.ScreenSlideActivity.java