React native plugin to get native android cell signal strength and speed internet.
npm install info-signal-strength
import { getCurrentSignalStrength } from 'info-signal-strength';
// ...
const result = await getCurrentSignalStrength();
Signal Strength Expected result is between 0 to 4
import { getTotalRxTxBytes } from 'info-signal-strength';
// ...
const result = await getTotalRxTxBytes();
//result example : {"rxBytes": 123891237, "txBytes": 41323222, "time": 1453432323}
This repository contains a method to measure internet speed using rxBytes
and txBytes
. While this approach works, it might not be the most effective or efficient solution. Feel free to suggest improvements or alternative solutions!
-
rxBytes: Returns the total number of bytes received since the device was booted. read here -> getTotalRxBytes()
-
txBytes: Returns the total number of bytes transmitted since the device was booted. read here -> getTotalTxBytes()
-
By comparing the initial and subsequent values of
rxBytes
andtxBytes
, the data usage and speed can be calculated.
Below is a simple example to demonstrate this approach:
to get internet speed, I have not found an effective and efficient way
but currently with rxBytes,txBytes and comparing the total initial data and the following data
the way I tried below. if anyone can provide the best solution other than this please let me know
import { getCurrentSignalStrength, getTotalRxTxBytes } from 'info-signal-strength';
useEffect(async () => {
const result = await getCurrentSignalStrength();
console.log("result",result);
}, []);
useEffect(async () => {
let previousResult = await getTotalRxTxBytes();
let intvl = 5000;
let time = intvl;
const calculateSpeed = async () => {
const currentResult = await getTotalRxTxBytes();
if (previousResult) {
// const url = 'https://freetestdata.com/wp-content/uploads/2021/09/1-MB-DOC.doc'; //this is just to trigger data movement, delete this, it will crash
// const response = await fetch(url); //this is just to trigger data movement, delete this, it will crash
console.log("previousResult.time",previousResult.time);
console.log("currentResult.time",currentResult.time);
let timeDiff = currentResult.time-previousResult.time;
let rxDiff = currentResult.rxBytes-previousResult.rxBytes;
let txDiff = currentResult.txBytes-previousResult.txBytes;
let rxSpeed = (rxDiff * 1000) / timeDiff;
let txSpeed = (txDiff * 1000) / timeDiff;
let download = (rxSpeed * 8) / (1024*1024); // Byte to bit, then to megabit
let upload = (txSpeed * 8) / (1024*1024); // Byte to bit, then to megabit
console.log("download Mbps", download);
console.log("upload Mbps", upload);
console.log("time", time);
}
time = time + intvl;
};
// Interval to check speed every second
const interval = setInterval(calculateSpeed, intvl);
return () => clearInterval(interval); // Cleanup on component unmount
}, []);
See the contributing guide to learn how to contribute to the repository and the development workflow.
MIT
Made with create-react-native-library