2016-06-17 6 views
11

TAGが参照されている場合を除き、ほとんどすべてのアクティビティが正常に動作しています。 TAGは赤い線で、'TAG' has private access in 'android.support.v4.app.FragmentActivity'と表示されます。私はこれが何を意味するかについての手がかりがないので、ここで私を助けてください。'TAG'には 'android.support.v4.app.FragmentActivity'のプライベートアクセス権があります

MainActivity(輸入なし) -

public class MainActivity extends AppCompatActivity { 
    public static final String DATA_PATH = Environment 
      .getExternalStorageDirectory().toString() + "/MainActivity"; 
    public static final String lang = "eng"; 

    protected Button _button; 
    protected ImageView _image; 
    protected TextView _field; 
    protected String _path; 
    protected boolean _taken; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     String[] paths = new String[] { DATA_PATH, DATA_PATH + "tessdata/" }; 

     for (String path : paths) { 
      File dir = new File(path); 
      if (!dir.exists()) { 
       if (!dir.mkdirs()) { 
        Log.v(TAG, "ERROR: Creation of directory " + path + " on sdcard failed"); 
        return; 
       } else { 
        Log.v(TAG, "Created directory " + path + " on sdcard"); 
       } 
      } 

     } 

     if (!(new File(DATA_PATH + "tessdata/" + lang + ".traineddata")).exists()) { 
      try { 

       AssetManager assetManager = getAssets(); 
       InputStream in = assetManager.open("tessdata/" + lang + ".traineddata"); 
       //GZIPInputStream gin = new GZIPInputStream(in); 
       OutputStream out = new FileOutputStream(DATA_PATH 
         + "tessdata/" + lang + ".traineddata"); 

       // Transfer bytes from in to out 
       byte[] buf = new byte[1024]; 
       int len; 
       //while ((lenf = gin.read(buff)) > 0) { 
       while ((len = in.read(buf)) > 0) { 
        out.write(buf, 0, len); 
       } 
       in.close(); 
       //gin.close(); 
       out.close(); 

       Log.v(TAG, "Copied " + lang + " traineddata"); 
      } catch (IOException e) { 
       Log.e(TAG, "Was unable to copy " + lang + " traineddata " + e.toString()); 
      } 
     } 

     _image = (ImageView) findViewById(R.id.image); 
     _field = (TextView) findViewById(R.id.field); 
     _button = (Button) findViewById(R.id.button); 
     _button.setOnClickListener(new ButtonClickHandler()); 

     _path = Environment.getExternalStorageDirectory() + "/Login Data.jpg"; 
    } 

    public class ButtonClickHandler implements View.OnClickListener 
    { 
     public void onClick(View view){ 
      startCameraActivity(); 
     } 
    } 

    protected void startCameraActivity() 
    { 
     File file = new File(_path); 
     Uri outputFileUri = Uri.fromFile(file); 

     Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
     intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 

     startActivityForResult(intent, 0); 
    } 

    protected void onPhotoTaken() 
    { 
     _taken = true; 

     BitmapFactory.Options options = new BitmapFactory.Options(); 
     options.inSampleSize = 4; 

     Bitmap bitmap = BitmapFactory.decodeFile(_path, options); 
     _image.setImageBitmap(bitmap); 

     _field.setVisibility(View.GONE); 

     ExifInterface exif = new ExifInterface(_path); 

     int exifOrientation = exif.getAttributeInt(
       ExifInterface.TAG_ORIENTATION, 
       ExifInterface.ORIENTATION_NORMAL); 

     int rotate = 0; 

     switch (exifOrientation) { 
      case ExifInterface.ORIENTATION_ROTATE_90: 
       rotate = 90; 
       break; 
      case ExifInterface.ORIENTATION_ROTATE_180: 
       rotate = 180; 
       break; 
      case ExifInterface.ORIENTATION_ROTATE_270: 
       rotate = 270; 
       break; 
     } 

     if (rotate != 0) { 
      int w = bitmap.getWidth(); 
      int h = bitmap.getHeight(); 

      // Setting pre rotate 
      Matrix mtx = new Matrix(); 
      mtx.preRotate(rotate); 

      // Rotating Bitmap & convert to ARGB_8888, required by tess 
      bitmap = Bitmap.createBitmap(bitmap, 0, 0, w, h, mtx, false); 
     } 
     bitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true); 

     TessBaseAPI baseApi = new TessBaseAPI(); 
     baseApi.init(DATA_PATH, lang); 
     baseApi.setImage(bitmap); 
     String recognizedText = baseApi.getUTF8Text(); 
     baseApi.end(); 
    } 

    @Override 
    protected void onSaveInstanceState(Bundle outState) { 
     outState.putBoolean(MainActivity.PHOTO_TAKEN, _taken); 
    } 

    @Override 
    protected void onRestoreInstanceState(Bundle savedInstanceState) 
    { 
     Log.i("MakeMachine", "onRestoreInstanceState()"); 
     if(savedInstanceState.getBoolean(MainActivity.PHOTO_TAKEN)) { 
      onPhotoTaken(); 
     } 
    } 
+0

[FragmentActivity](https://github.com/android/platform_frameworks_support/blob/master/v4/java/android/support/v4/app/FragmentActivity.java#L82)のソースコードを見てください。 82行目の 'TAG'はプライベートです。 –

+0

公開する必要がありますか? –

+0

それはロックされたように見える –

答えて

22

あなたはMainActivityであなたのタグのための定数を定義する必要があります。

private static final String TAG = "MainActivity" 
+0

ありがとう!出来た! –

5

あなたはこのフィールドを使用することができ、次の

private static final String TAG = MainActivity.class.getSimpleName(); 

を試してみてくださいあなたの任意の活動や断片で。

関連する問題