내 활동에 3 개의 클래스가 있으며, 첫 번째는 블루투스 연결을 처리하고 인터페이스를 통해 일부 값을 반환하는 BLEmanager입니다.무시 된 메서드가 호출되지 않습니다.
두 번째 것은 내가 스플래시라고 부르는 활동이며, LAUNCHER 활동입니다. Splash는 AppCompactActivities를 확장하고 BLEmanager 인터페이스를 구현하므로 연결이 설정되면 세 번째 작업을 호출 할 수 있습니다. 모든 인터페이스 메소드가이 클래스 안에 포함되어 있지만 세 번째 클래스에서도 무언가를 트리거하려고합니다.
세 번째 클래스는 Main이라고하는 활동으로, 앱의 핵심과 모든 기능을 포함합니다. 이 클래스는 Splash를 확장합니다. 이 사실 덕분에 나는 이미 Splash 안에있는 인터페이스 메소드를 오버라이드 할 수 있다고 생각했다.
왜 나는 BLEmanager에서 인터페이스 메서드를 호출 할 때 Splash 클래스 내부의 메서드 만 트리거되고 Main 메서드는 트리거되지 않습니다.
코드는 매우 혼란스럽고 게시하지 않았으므로 필요한 경우 저에게 물어보십시오.
감사합니다.
편집 : 여기
코드, 의견과 변수 이름이 클래스 내부 BLEmanager
public class MDPtechBLE {
private int MY_PERMISSION_LOCATION=1;
private Context context;
private Activity activity; //contesto e activity della applicazione
private CallBacksBLE CB_BLE; //Interfaccia di Callback
private BluetoothGatt GATT;
//Variabili Strettamente legate al Bluetooth
private static BluetoothAdapter myBlueAdapt; //Adapter del BLE, rappresenta il modulo HW del BLE
private Intent enableBtIntent;
private ScanCallback myScanCallBack; //NUOVA CALLBACK
private BluetoothAdapter.LeScanCallback myLeScanCallBack; //VECCHIA CALLBACK
public BluetoothDevice DISPOSITIVOCONNESSO;
//variabi utili
private int TempoScansione=1000;
private boolean MitragliatriceState=false;
//Liste
private List<ScanResult> ListaDeiRisultatiTrovatiDallaScansione; //Nuova Lista di device trovati dalla scansione
private List<BluetoothGattService> ListaServizi;
private List<BluetoothGattCharacteristic> ListaTutteLeCaratteristiche;
private List<BluetoothGattCharacteristic> ListaCaratteristicheSCRITTURA;
private List<BluetoothGattCharacteristic> ListaCaratteristicheLETTURA;
List<PacchettoScrittura> Coda;
//Devo tenere in memoria tutte le Caratteristiche che mi serviranno, PARLARNE CON GIACOMO A PROPOSITO, devono essere pubbliche per essere raggiunte anche dai frammenti
public MDPtechBLE(Context context)
{
ListaServizi = new ArrayList<>();
this.context=context;
activity = (Activity)context;
this.CB_BLE = (CallBacksBLE)context;
initVariabiliScansione();
Log.i("BLE","inizializzato");
Start();
}
이탈리아어
에있어 모든 메소드의 처리하는 내 BLE 연결이 있습니다 .
** ** 콜백 인터페이스
public interface CallBacksBLE {
//BLUETOOTH
void BluetoothStato(Boolean stato);
void BleError(int ErrorCode);
//GATT
void StatoConnessioneCambiato(int stato);
void ViaLibera(List<BluetoothGattCharacteristic> ListaCaratteristicheSCRITTURA, List<BluetoothGattCharacteristic> ListaCaratteristicheLETTURA);
void RisultatoLettura(byte[] data, BluetoothGattCharacteristic CharLetta);
void Notifica(byte[] data, BluetoothGattCharacteristic CharNotificata);
}
예를 들어, 접속 상태의 변화 나 (의 현재 접속 상태 ') CB_BLE.StatoConnessioneCambiato를 호출 할 때,;
SPLASH
public class Splash extends AppCompatActivity implements CallBacksBLE{
private Intent mainIntent;
public static MDPtechBLE MyBLE;
//Variabili Resume Pause
public static boolean CambioActivityEffettuato;
@Override
public void onCreate(Bundle savedInstanceState) {
setTheme(R.style.AppTheme);
super.onCreate(savedInstanceState);
setContentView(R.layout.splashscreen_xlink);
startLockTask();
if(MyBLE==null){
Log.i("Splash","Creazione");
MyBLE = new MDPtechBLE(this);
}
mainIntent = new Intent(Splash.this,MasterActivity.class);
}
@Override
public void onResume() {
super.onResume();
Log.e("DEBUG", "onResume of Splash");
}
@Override
public void onPause() {
super.onPause();
Log.e("DEBUG", "OnPause of Splash");
}
Boolean InRicerca=false;
@Override
public void BluetoothStato(Boolean Stato) {
if(Stato && !InRicerca) {
InRicerca=true;
MyBLE.Cerca_e_Connetti();
}
}
@Override
public void BleError(int ErrorCode) {
}
@Override
public void StatoConnessioneCambiato(int stato) {
int i=0;
i++; //BREAKPOINT
}
@Override
public void ViaLibera(List<BluetoothGattCharacteristic> ListaCaratteristicheSCRITTURA, List<BluetoothGattCharacteristic> ListaCaratteristicheLETTURA) {
CambioActivityEffettuato=true;
Splash.this.startActivity(mainIntent);
Splash.this.finish();
MyBLE.SetMitragliatriceState(true);
}
@Override
public void RisultatoLettura(byte[] data, BluetoothGattCharacteristic CharLetta) {
}
@Override
public void Notifica(byte[] data, BluetoothGattCharacteristic CharNotificata) {
}
@Override
public void onBackPressed() {
// nothing to do here
// … really
}
}
여기스플래시, 콜백이 인터페이스 방법은에서 여기 BLEmanager
MainMaster
호출되면 트리거 주요 클래스 나는 모든 조각과 모든 처리 응용 프로그램의 나머지, 옳은 방법으로 모든 것을 할 내가 BLE 상태를 알고 싶습니다.이 클래스에서 SPLASH에있는 동일한 콜백을 구현해야합니다. 그래서 나는 SPLASH 확장에 대해 생각했다.
@Override
public void StatoConnessioneCambiato(int stato) {
int k=0;
k++; //BREAKPOINT
}
이것은 BLE 연결 상태를 알려주는 콜백입니다. BLEmanager에서 호출하는 경우 Splash 내부의 StatoConnessioneCambiato (bool) 만 트리거되고 MasterActivity 내부의 StatoConseioneCambiato (bool)는 트리거되지 않습니다.
* 필요하면 저에게 물어보십시오. * 우리가 필요합니다 –
여기에 코드가 있습니다.) –