我正在尝试开发一个简单的应用程序来检测beacon使用电容器集成离子框架,并运行到android平台。我已经做了所有的委托在homepage.ts和权限像往常一样(从官方文档和github的例子)。现在所有剩下的是设置新的beacon解析为ibeacon(默认为altbeacon)。当我运行的应用程序,它崩溃了。
这是我到目前为止所尝试的(注意,我不擅长Java)这是从我的MainActivity.java文件调用解析文件
import android.os.RemoteException;
public class MainActivity extends BridgeActivity {
private Parsing myParsing;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Parsing myParsing = new Parsing();
myParsing.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
这是我的Parsing.java文件
package io.ionic.starter;
import com.getcapacitor.BridgeActivity;
import org.altbeacon.beacon.Beacon;
import org.altbeacon.beacon.BeaconConsumer;
import org.altbeacon.beacon.RangeNotifier;
import org.altbeacon.beacon.Region;
import org.altbeacon.beacon.BeaconManager;
import org.altbeacon.beacon.BeaconParser;
import org.altbeacon.beacon.Identifier;
import java.util.Collection;
import android.os.Bundle;
import android.util.Log;
import android.os.RemoteException;
//m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24 ibeacon
public class Parsing extends BridgeActivity implements BeaconConsumer{
protected static final String TAG = "RangingActivity";
BeaconManager beaconManager;
Identifier uuidb =Identifier.parse("sumthing");
int major=sumthing;
int minor=sumthing;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
beaconManager = BeaconManager.getInstanceForApplication(this);
beaconManager.getBeaconParsers().add(new BeaconParser().setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"));
beaconManager.bind(this);
}
@Override
public void onBeaconServiceConnect() {
Region region = new Region("beaconTest",uuidb, Identifier.fromInt(major), Identifier.fromInt(minor));
try {
beaconManager.startMonitoringBeaconsInRegion(region);
} catch (RemoteException e) {
e.printStackTrace();
}
}
}
运行应用程序时崩溃,并显示您的Activity尚未附加到应用程序示例。您无法在onCreate调用之前请求ViewModel。
如果我只在主活动中进行解析,它将抛出一些关于不能覆盖抽象方法的信息。
任何帮助都将不胜感激
这是离子信息
Ionic:
Ionic CLI : 6.20.8 (C:\Users\User\AppData\Roaming\npm\node_modules\@ionic\cli)
Ionic Framework : @ionic/angular 6.5.6
@angular-devkit/build-angular : 15.2.0
@angular-devkit/schematics : 15.2.0
@angular/cli : 15.2.0
@ionic/angular-toolkit : 6.1.0
Capacitor:
Capacitor CLI : 4.7.0
@capacitor/android : 4.7.0
@capacitor/core : 4.7.0
@capacitor/ios : not installed
Utility:
cordova-res : 0.15.4
native-run : 1.7.1
System:
NodeJS : v18.14.0 (C:\Program Files\nodejs\node.exe)
npm : 6.14.13
OS : Windows 10
1条答案
按热度按时间von4xj4u1#
添加Parsing类会带来问题--在Android上,如果不向操作系统注册Activity示例,您无法随时创建新的Activity示例。
请确保此MainAcitity已在你的应用中正确注册,以便由Ionic使用。如果未激活此Activity,则不会执行此代码。
上面的代码显示了更简单的Autobind APIs in the Android Beacon Library,不需要调用
bind(this)
。Android Beacon Library 2.19+支持这些API。请确保您拥有该库版本或更高版本--如果您使用的是使用旧版Android Beacon Library的旧版Ionic或Cordova插件,则可能无法正常工作。