gpt4 book ai didi

java - 从适用于 Android 应用程序 API 17+ 的 CellSignalStrengthLte 获取 RSRP

转载 作者:太空狗 更新时间:2023-10-29 16:14:41 27 4
gpt4 key购买 nike

在过去的十年里,有几个人问过类似的问题,但没有人有任何答案。我需要编写一个 android 应用程序来收集和存储 RSRP、RSRQ、CINR 和 Cell ID。答案需要在手机硬件允许的范围内尽可能准确(我正在三星 Galaxy S5 上进行测试),因为我需要使用这些值进行后期处理统计。

有谁知道如何使用 telephonyManager 或 CellSignalStrengthLte 来获取 RSRP?还是有其他更好的方法来获取 RSRP?

到目前为止,我能做的最好的事情是使用 PhoneStateListener 和 TelephonyManager 来获取 RSSI 值,但 RSSI 对我的统计数据毫无用处:

    package com.pscr.jparks.signalstrength;

import android.app.Activity;
import android.os.Bundle;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.widget.TextView;
/*
TS 27.007 8.5
Defined values
<rssi>:
0 -113 dBm or less
1 -111 dBm
2...30 -109... -53 dBm
31 -51 dBm or greater
99 not known or not detectable
*/

public class SignalStrengthActivity extends Activity {

SignalStrengthListener signalStrengthListener;
TextView signalStrengthTextView;


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

//setup content stuff
this.setContentView(R.layout.signal_strength);
signalStrengthTextView = (TextView) findViewById(R.id.signalStrengthTextView);

//start the signal strength listener
signalStrengthListener = new SignalStrengthListener();
((TelephonyManager) getSystemService(TELEPHONY_SERVICE)).listen(signalStrengthListener, SignalStrengthListener.LISTEN_SIGNAL_STRENGTHS);
}


private class SignalStrengthListener extends PhoneStateListener {
@Override
public void onSignalStrengthsChanged(android.telephony.SignalStrength signalStrength) {

// get the signal strength (a value between 0 and 31)
int strengthAmplitude = signalStrength.getGsmSignalStrength();

//do something with it (in this case we update a text view)
signalStrengthTextView.setText(String.valueOf(strengthAmplitude));
super.onSignalStrengthsChanged(signalStrength);
}
}
}

如果有人解决了这个问题,或者找到了答案(我到处都找过了!),请告诉我!

最佳答案

更新:

TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
List<CellInfo> cellInfoList = tm.getAllCellInfo();
for (CellInfo cellInfo : cellInfoList)
{
if (cellInfo instanceof CellInfoLte)
{
// cast to CellInfoLte and call all the CellInfoLte methods you need
((CellInfoLte)cellInfo).getCellSignalStrength().getDbm();
}
}

关于java - 从适用于 Android 应用程序 API 17+ 的 CellSignalStrengthLte 获取 RSRP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32531176/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com