BluetoothSPPLibraryでよくLostしてた問題

BluetoothSPPLibraryは結構優秀なライブラリーで使用していたのだけど、回転時とか、Activityから離れた時にLostすることが多かった。でもonDestoryとかでbt.stopとかしていたらまぁ、動く事が多かったからそのまま放置していた。

しかし、前にも書いたかもしれないけどなぞのActivityの死亡が時々見られた。

業務ソフトでたまに死んでは話にならないので根本的に見直すことにした。

結論。

globalsで定義して対応。

たったこれだけかもしれないけどとりあえず今のところAcvitiy死なないし、しかもLostもなくなった。

Globals:

public class Globals extends Application {
    BluetoothSPP bt;

 

MainActivity:

@Override
protected void onStart() {
    super.onStart();
    
    if(globals.bt==null)globals.bt = new BluetoothSPP(this.getApplicationContext());
    if(!globals.bt.isBluetoothEnabled()) {
        globals.bt.enable();
        Toast.makeText(this, "Bluetoothを有効にしています", Toast.LENGTH_SHORT).show();
    } else {
        if(!globals.bt.isServiceAvailable()) {
            globals.bt.setupService();
            globals.bt.startService(BluetoothState.DEVICE_OTHER);
            setup();
        }
    }

    if(!globals.bt.isBluetoothAvailable()) {

        Toast.makeText(this, "Bluetoothが存在しません。", Toast.LENGTH_SHORT).show();
        // any command for bluetooth is not available
    }

たったこれだけでとりあえずタスク切り替えても切断されず動いた。

あとはactivityが謎の死を遂げないかを祈るだけである。

lsolesen/pel(PHP Exif Library)の使い方

PHPでEXIFを使いたいと思ってたんだけど、公式の通りやっても動かない。
set_include_path(‘library\lsolesen-pel-308f226\src’ . PATH_SEPARATOR . get_include_path());

とかやれって書いてるのに動かないぞ!と

Fatal error: Class 'PelJpeg' not found in

がでる

結論として

require_once "pel/autoload.php";
use lsolesen\pel\PelJpeg;
use lsolesen\pel\PelTag;
use lsolesen\pel\PelIfd;

で動いた。

バージョンが古かったらしい。たぶん。