Win8.1を使い続けると何故かCドライブの空き容量が減っていく問題

Win8.1を使い続けると何故かCドライブの空き容量が減っていく問題が起こった。

というか何度か起こってたんだけど。

結論は大体自分の場合の原因はIndexファイルだ。

Windows.edb

が今回50GBにもなってた。

このファイルが曲者でファイルサイズが大きいものとかで検索してもpermissionを与えてないと出てこないから引っかかってこなかった。

まぁシステムからWindows Search Index的なのを無効にしてあげると治るはず。

検索遅くなるけどね。

待てないぐらい遅くなったらまた有効にするかな。

でも適度に最適化させるといいのかな。

よくわからないのでとりあえずしばらくは無効

Screenshot 2015-09-28 14.25.19

usb-serial-for-android

https://github.com/mik3y/usb-serial-for-android

でのgradleの追加の仕方がよくわからなかった。

usb-serial-for-android-v010.jar

をlibsに追加してやろうとしたけどなんかUsbSerialPortが足りなさそうなので最新版にしようとした。

結論:

gradleに

allprojects {
    repositories {
        maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
        mavenCentral()
    }
}

dependency:

compile 'com.hoho.android:usb-serial-for-android:0.2.0-SNAPSHOT@aar'

でいけた。

謎なカメラのorientation

今までintentで内部のカメラアプリを起動さしてjpgをgetしてたけど、今回シャッターの制御が必要になったので自作カメラアプリを作った。

なぜか一番悩んだのが画像の向きだ。

横にしたり縦にしたりしても、Exif情報がなんか1に固定されている。

仕方ないので

protected void configureCameraParameters(Camera.Parameters cameraParams, boolean portrait) {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.FROYO) { // for 2.1 and before
        if (portrait) {
            cameraParams.set(CAMERA_PARAM_ORIENTATION, CAMERA_PARAM_PORTRAIT);
        } else {
            cameraParams.set(CAMERA_PARAM_ORIENTATION, CAMERA_PARAM_LANDSCAPE);
        }
    } else { // for 2.2 and later
        int angle;
        int angle2;
        Display display = mActivity.getWindowManager().getDefaultDisplay();
        switch (display.getRotation()) {
            case Surface.ROTATION_0: // This is display orientation
                angle = 90; // This is camera orientation
                angle2=0;
                break;
            case Surface.ROTATION_90:
                angle = 0;
                angle2=270;
                break;
            case Surface.ROTATION_180:
                angle = 270;
                angle2=180;
                break;
            case Surface.ROTATION_270:
                angle = 180;
                angle2=0;
                break;
            default:
                angle = 90;
                angle2=90;
                break;
        }
        Log.v(LOG_TAG, "angle: " + angle);
        onOrientationChanged(angle2);
        mCamera.setDisplayOrientation(angle);
    }

 

public void onOrientationChanged(int orientation) {
    //if (orientation == ORIENTATION_UNKNOWN) return;
    android.hardware.Camera.CameraInfo info =
            new android.hardware.Camera.CameraInfo();
    android.hardware.Camera.getCameraInfo(mCameraId, info);
    orientation = (orientation + 45) / 90 * 90;
    int rotation = 0;
    if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
        rotation = (info.orientation - orientation + 360) % 360;
    } else {  // back-facing camera
        rotation = (info.orientation + orientation) % 360;
    }
    Camera.Parameters cameraParams = mCamera.getParameters();
    cameraParams.setRotation(rotation);
    mCamera.setParameters(cameraParams);
}

で対応さした。

謎なのがDisplayのangleとカメラのangleが違うところだ。

よくわからない処理が行われているのだろうきっと。

これで動いたからよしとする。

DialogFragmentでViewPager使って回転時に落ちる問題

回転時にまつわる問題。

DialogFragmentでViewPager使ってるやつだと回転時に

java.lang.IllegalStateException: Activity has been destroyed

で落ちることがある。てかメモリが弱い機種だとすぐ落ちる。

もう

@Override
 public int show(FragmentTransaction transaction, String tag) {
    try {
        return super.show(transaction, tag);
    } catch (IllegalStateException e) {
        // ignore
    }
    return -1;
}

@Override
public void show(FragmentManager manager, String tag) {
    try {
        super.show(manager, tag);
    } catch (IllegalStateException e) {
        // ignore
    }
}

で対応しようとしたけどなんか無理っぽい。

わけわからんなーと思いつつどこで落ちるんだろうと思ってfragmentのサイクルをLOGしてみた

/***
 * Activityに関連付けされた際に一度だけ呼び出される
 */
static final String TAG = "FragmentTest";
@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    Log.d(TAG, "onAttach");
}

/***
 * Fragmentの初期化処理を行う
 */

/***
 * Activityの「onResume」に基づき開始される
 */
@Override
public void onResume() {
    super.onResume();
    Log.d(TAG, "onResume");
}

/***
 * Activityが「onPause」になった場合や、Fragmentが変更更新されて操作を受け付けなくなった場合に呼び出される
 */

/***
 * フォアグラウンドでなくなった場合に呼び出される
 */
@Override
public void onStop() {
    super.onStop();
    Log.d(TAG, "onStop");
}

/***
 * Fragmentの内部のViewリソースの整理を行う
 */
@Override
public void onDestroyView() {
    super.onDestroyView();
    Log.d(TAG, "onDestroyView");
}

/***
 * Fragmentが破棄される時、最後に呼び出される
 */
@Override
public void onDestroy() {
    super.onDestroy();
    Log.d(TAG, "onDestroy");
}

なぜか落ちなくなった。

↑の分を足すだけで解決した。

わけわからない・・・・

 

追記:ダメでした