4G信号数据的采集

serial
BlueMatthew 1 year ago
parent 415350abcd
commit 4dea670cb2

@ -265,7 +265,9 @@ Java_com_xypower_mpapp_MainActivity_takePhoto(
extern "C" JNIEXPORT jlong JNICALL
Java_com_xypower_mpapp_MicroPhotoService_init(
JNIEnv* env,
jobject pThis, jstring appPath, jstring ip, jint port, jstring cmdid, jint protocol, jint networkProtocol, jlong netHandle) {
jobject pThis, jstring appPath,
jstring ip, jint port, jstring cmdid, jint protocol,
jint networkProtocol, jlong netHandle, jint signalLevel) {
/*
google_breakpad::MinidumpDescriptor descriptor(".");
@ -305,6 +307,7 @@ Java_com_xypower_mpapp_MicroPhotoService_init(
CPhoneDevice* device = new CPhoneDevice(vm, pThis, appPathStr, NETID_UNSET);
device->SetListener(pTerminal);
device->UpdateSignalLevel(signalLevel);
pTerminal->InitServerInfo(appPathStr, cmdidStr, ipStr, port, udpOrTcp);
// pTerminal->SetPacketSize(1 * 1024); // 1K
@ -350,7 +353,7 @@ extern "C" JNIEXPORT jboolean JNICALL
Java_com_xypower_mpapp_MicroPhotoService_sendHeartbeat(
JNIEnv* env,
jobject pThis,
jlong handler) {
jlong handler, jint signalLevel) {
CTerminal* pTerminal = reinterpret_cast<CTerminal *>(handler);
if (pTerminal == NULL)
@ -358,6 +361,12 @@ Java_com_xypower_mpapp_MicroPhotoService_sendHeartbeat(
return JNI_FALSE;
}
CPhoneDevice* device = (CPhoneDevice*)pTerminal->GetDevice();
if (device != NULL)
{
device->UpdateSignalLevel(signalLevel);
}
pTerminal->SendHeartbeat();
return JNI_TRUE;

@ -165,6 +165,9 @@ CPhoneDevice::CPhoneDevice(JavaVM* vm, jobject service, const std::string& appPa
mNetId = netId;
m_signalLevel = 0;
m_signalLevelUpdateTime = time(NULL);
m_sysApiClass = NULL;
RegisterHandlerForSignal(SIGUSR2);
@ -375,12 +378,22 @@ bool CPhoneDevice::QuerySystemProperties(std::map<std::string, std::string>& pro
else if (it->first == PROP_FREE_ROM)
{
fs::space_info si = fs::space("/data");
it->second = std::to_string(si.available);
it->second = std::to_string(si.available); // Unit: M
}
else if (it->first == PROP_TOTAL_ROM)
{
fs::space_info si = fs::space("/data");
it->second = std::to_string(si.capacity);
it->second = std::to_string(si.capacity); // Unit: M
}
else if (it->first == PROP_FREE_MEMORY)
{
fs::space_info si = fs::space("/data");
it->second = std::to_string(android_os_Process_getFreeMemory()); // Unit: M
}
else if (it->first == PROP_TOTAL_MEMORY)
{
fs::space_info si = fs::space("/data");
it->second = std::to_string(android_os_Process_getTotalMemory()); // Unit: M
}
else if (it->first == (PROP_CHARGING_VOLTAGE))
{
@ -421,6 +434,10 @@ bool CPhoneDevice::QuerySystemProperties(std::map<std::string, std::string>& pro
{
it->second = std::to_string(GpioControl::getBatteryBusVoltage());
}
else if ((it->first == (PROP_SIGNAL_4G)) || (it->first == (PROP_SIGNAL_2G)))
{
it->second = std::to_string(m_signalLevel);
}
else if (startsWith(it->first, PROP_JAVA_PREFIX))
{
if (powerInfo.empty())
@ -1209,4 +1226,10 @@ void CPhoneDevice::TurnOffOtg(JNIEnv* env)
}
}
m_devLocker.unlock();
}
void CPhoneDevice::UpdateSignalLevel(int signalLevel)
{
m_signalLevel = signalLevel;
m_signalLevelUpdateTime = time(NULL);
}

@ -198,6 +198,7 @@ public:
void UpdatePosition(double lon, double lat, time_t ts);
bool OnVideoReady(bool result, const char* path, unsigned int photoId);
void UpdateSignalLevel(int signalLevel);
protected:
@ -292,6 +293,9 @@ protected:
long mOtgCount;
std::thread m_threadClose;
int m_signalLevel;
time_t m_signalLevelUpdateTime;
};

@ -332,7 +332,7 @@ public class MicroPhotoService extends Service {
String action = intent.getAction();
if (TextUtils.equals(ACTION_HEARTBEAT, action)) {
Log.i(TAG, "HB Timer Fired ACTION=" + action);
mService.sendHeartbeat(mService.mNativeHandle);
mService.sendHeartbeat(mService.mNativeHandle, mService.getSignalLevel());
mService.registerHeartbeatTimer();
} else if (TextUtils.equals(ACTION_TAKE_PHOTO, action)) {
@ -357,7 +357,7 @@ public class MicroPhotoService extends Service {
mService.updateCaptureSchedule(startTime);
} else if (TextUtils.equals(ACTION_HEARTBEAT_MANUALLY, action)) {
Log.i(TAG, "HB Timer Fired ACTION=" + action);
mService.sendHeartbeat(mService.mNativeHandle);
mService.sendHeartbeat(mService.mNativeHandle, mService.getSignalLevel());
} else if (TextUtils.equals(ACTION_TAKE_PHOTO_MANUALLY, action)) {
int channel = intent.getIntExtra(EXTRA_PARAM_CHANNEL, 0);
int preset = intent.getIntExtra(EXTRA_PARAM_PRESET, 0);
@ -373,7 +373,7 @@ public class MicroPhotoService extends Service {
int data = intent.getIntExtra("data", 0);
if (what == MSG_WHAT_SENDING_HB) {
mService.sendHeartbeat(mService.mNativeHandle);
mService.sendHeartbeat(mService.mNativeHandle, mService.getSignalLevel());
}
} else if (TextUtils.equals(ACTION_VIDEO_FINISHED, action)) {
boolean result = intent.getBooleanExtra("result", false);
@ -654,7 +654,7 @@ public class MicroPhotoService extends Service {
MicroPhotoService service = MicroPhotoService.this;
service.mNativeHandle = init(appPath, server, port, cmdid, protocol, networkProtocol, 0);
service.mNativeHandle = init(appPath, server, port, cmdid, protocol, networkProtocol, 0, service.getSignalLevel());
if (service.mNativeHandle !=0) {
isRunning = true;
@ -898,6 +898,18 @@ public class MicroPhotoService extends Service {
th.start();
}
protected int getSignalLevel() {
try {
final TelephonyManager telephonyManager = (TelephonyManager) getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE);
SignalStrength ss = telephonyManager.getSignalStrength();
if (ss != null) {
return ss.getLevel();
}
} catch (Exception ex) {
}
return -1;
}
public String getSystemInfo() {
boolean isXyPlatform = mModelName.startsWith("tb8788");
@ -1022,13 +1034,13 @@ CellSignalStrengthGsm cellSignalStrengthGsm = cellInfoGsm.getCellSignalStrength(
cellSignalStrengthGsm.getDbm();
*/
protected native long init(String appPath, String ip, int port, String cmdid, int protocol, int networkProtocl, long netHandle);
protected native long init(String appPath, String ip, int port, String cmdid, int protocol, int networkProtocl, long netHandle, int signalLevel);
protected native long getHeartbeatDuration(long handler);
protected native long[] getPhotoTimeData(long handler, long startTime);
protected native long[] getPhotoTimeData2(long handler);
// protected native long[] getNextScheduleItem(long handler);
protected native boolean notifyToTakePhoto(long handler, int channel, int preset, long scheduleTime, boolean photoOrVideo);
protected native boolean sendHeartbeat(long handler);
protected native boolean sendHeartbeat(long handler, int signalLevel);
protected native void updatePosition(long handler, double lon, double lat, long ts);
protected native boolean uninit(long handler);
protected native void recordingFinished(long handler, boolean result, String path, long videoId);

Loading…
Cancel
Save