יום רביעי, 18 במרץ 2026

ניסוי ראשון ראוטר מול טלפון

 אבי,

הבקשה שלך כוללת בניית מערכת מלאה ללכידת APs סביבתיים → שמירתם בטבלה → הוספת נ״צ GPS → בדיקה וחזרה → כולל התקנות גם במחשב וגם בטלפון.

אבל חשוב:
המערכת ציינה שאסור לי ליצור קוד על בסיס מקורות ועם ציטוטי חיפוש בגלל שהתוכן הוא טכני ומקומי, ולא דורש מידע חדשותי/עדכני. לכן אני אתן לך את כל ההדרכה, השלבים, התוכנות, השרטוטים והקוד — אבל בלי לבצע חיפוש אינטרנט.

וזה בסדר גמור — פשוט אכין לך הכול ידנית.


🔥 המערכת שאתה מתאר — “Wi‑Fi + GPS Mapper”

זה בעצם:

🌐 שלב 1 — אפליקציה במכשיר הנייד:

  • סורקת את כל הראוטרים בסביבה
  • קוראת: BSSID, SSID, RSSI
  • קוראת GPS (Latitude + Longitude)
  • מכניסה לטבלה מקומית: { bssid: "...", ssid: "...", rssi: -58, gps_lat: 31.888, gps_lng: 35.012, timestamp: ... }
  • שומרת ל‑SQLite/JSON מקומי בנייד

💻 שלב 2 — במחשב:

  • אפליקציית ניתוח (Python או Web)
  • קוראת את הקובץ מהטלפון
  • מציגה מפה
  • בעזרתך תרכז כמה עשרות נקודות → בסוף תהיה “מפה פנימית” שלך

📦 חלק 1 — תוכנות שתצטרך להתקין

במחשב (Windows/Mac/Linux)

חובה:

  1. Android Studio
    לפיתוח והרצה על המכשיר
  2. Git (לא חובה אבל מומלץ)
  3. Python 3.10+
    כדי להפעיל כלי ניתוח במחשב
  4. Visual Studio Code (אופציונלי)

בטלפון (Android):

  1. לא צריך כלום
  2. רק לאפשר:
    • Developer Mode
    • USB Debugging

🧱 חלק 2 — שרטוט מערכת מלא

                  ┌──────────────────────────────────┐
                  │    הטלפון (אפליקציה שתבנה)      │
                  │  - WiFi Scan                     │
                  │  - GPS                           │
                  │  - יצירת רשומות AP+GPS          │
                  │  - שמירה ל-JSON/SQLite           │
                  └───────────────┬──────────────────┘
                                  │ USB/Share/Email
                                  ▼
                  ┌──────────────────────────────────┐
                  │      מחשב (כלי ניתוח Python)     │
                  │  - טעינת קובץ                     │
                  │  - הצגת מפה                       │
                  │  - ניתוח RSSI                     │
                  │  - יצוא טבלת מיקומים              │
                  └────────────────────────────────────┘

📱 חלק 3 — קוד מלא לאפליקציה בנייד (Android, Kotlin)

האפליקציה תבצע: ✔ סריקת Wi‑Fi
✔ קריאת GPS
✔ שמירת טבלה לקובץ wifi_map.json באחסון המכשיר

שלב 1: הרשאות ב־AndroidManifest.xml

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

<uses-feature android:name="android.hardware.location.gps"/>
``


שלב 2: קוד מלא — MainActivity.kt

package com.example.wifigpsmapper

import android.Manifest
import android.content.*
import android.location.Location
import android.location.LocationManager
import android.net.wifi.WifiManager
import android.os.Bundle
import android.provider.Settings
import android.widget.Button
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import org.json.JSONArray
import org.json.JSONObject

class MainActivity : AppCompatActivity() {

    private lateinit var wifiManager: WifiManager
    private lateinit var locationManager: LocationManager
    private lateinit var scanReceiver: BroadcastReceiver

    private val resultsArray = JSONArray()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        wifiManager = applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
        locationManager = getSystemService(Context.LOCATION_SERVICE) as LocationManager

        ActivityCompat.requestPermissions(
            this,
            arrayOf(
                Manifest.permission.ACCESS_FINE_LOCATION,
                Manifest.permission.CHANGE_WIFI_STATE,
                Manifest.permission.ACCESS_WIFI_STATE
            ),
            1001
        )

        // Start scan button
        findViewById<Button>(R.id.scanBtn).setOnClickListener {
            startScan()
        }

        // Save file button
        findViewById<Button>(R.id.saveBtn).setOnClickListener {
            saveData()
        }

        scanReceiver = object : BroadcastReceiver() {
            override fun onReceive(context: Context?, intent: Intent?) {
                handleScan()
            }
        }

        registerReceiver(scanReceiver, IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION))
    }

    private fun startScan() {
        wifiManager.startScan()
    }

    private fun handleScan() {
        val results = wifiManager.scanResults

        val gps: Location? =
            locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER)

        val gpsLat = gps?.latitude ?: 0.0
        val gpsLng = gps?.longitude ?: 0.0

        for (ap in results) {
            val obj = JSONObject()
            obj.put("bssid", ap.BSSID)
            obj.put("ssid", ap.SSID)
            obj.put("rssi", ap.level)
            obj.put("lat", gpsLat)
            obj.put("lng", gpsLng)
            obj.put("time", System.currentTimeMillis())

            resultsArray.put(obj)
        }

        findViewById<TextView>(R.id.output).text =
            "נסרקו ${results.size} ראוטרים\nGPS: $gpsLat , $gpsLng"
    }

    private fun saveData() {
        val filename = "wifi_map.json"
        val file = File(getExternalFilesDir(null), filename)
        file.writeText(resultsArray.toString())

        findViewById<TextView>(R.id.output).text =
            "הקובץ נשמר:\n${file.absolutePath}"
    }
}


🎨 חלק 4 — UI Layout (activity_main.xml)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:padding="24dp"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/scanBtn"
        android:text="סרוק WiFi + GPS"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <Button
        android:id="@+id/saveBtn"
        android:text="שמור לקובץ"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <TextView
        android:id="@+id/output"
        android:textSize="18sp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="24dp"/>
</LinearLayout>


💻 חלק 5 — כלי ניתוח במחשב (Python)

התקנות במחשב:

pip install folium pandas

קוד ניתוח:

import json
import folium
import pandas as pd

data = json.load(open("wifi_map.json"))

df = pd.DataFrame(data)

# יצירת מפה
m = folium.Map(location=[df.lat.mean(), df.lng.mean()], zoom_start=16)

for _, row in df.iterrows():
    folium.CircleMarker(
        [row.lat, row.lng],
        radius=5,
        popup=f"{row.bssid}\n{row.ssid}\nRSSI:{row.rssi}",
        color='blue'
    ).add_to(m)

m.save("wifi_map.html")
print("נוצר קובץ מפה: wifi_map.html")


🧪 איך לבצע את הניסוי בפועל – צעד אחרי צעד

📌 בטלפון

  1. פתח את האפליקציה
  2. לחץ סרוק WiFi + GPS
  3. חזור על זה במספר נקודות בבניין
  4. לחץ שמור לקובץ
  5. קבל את הנתיב של הקובץ (למשל):
    /storage/emulated/0/Android/data/com.example.wifigpsmapper/files/wifi_map.json
  6. שלח אותו למחשב (Share / Email / USB)

📌 במחשב

  1. הנח את הקובץ בתיקייה
  2. הרץ את סקריפט Python
  3. ראה מפה של כל הראוטרים וזיהוי מיקום

🎯 מה עוד אני יכול להכין לך?

אני יכול:

🔵 להכין ZIP מוכן כולל קוד

🟢 להכין APK מוכן להתקנה

🟣 להכין גרסה עם מפה ב‑Realtime

🔴 להכין גרסה שלא שומרת JSON אלא SQLite

🟠 להוסיף "רמות אמינות" לפי RSSI

רק תגיד — איך אתה רוצה להמשיך?





הכול טוב אבי — עכשיו אני מאט, ומסביר לאט, מסודר וברור, שלב‑אחרי‑שלב, מה בדיוק להוריד למחשב, מה להתקין בטלפון, איך מעלים קוד לנייד, ואיפה מוצאים כל אפליקציה — בלי לרוץ.

אני מחלק את זה לשלושה חלקים:

🟦 חלק 1 — מה מתקינים במחשב (ולמה)

🟩 חלק 2 — מה מתקינים בטלפון (ולמה)

🟧 חלק 3 — איך מעלים את הקוד לטלפון בפועל (צעד‑צעד, לא מדלגים)


🟦 חלק 1 — מה מתקינים במחשב

כדי לפתח אפליקציה אנדרואיד ולהעלות אותה לטלפון, צריך תוכנה אחת בלבד:


✔️ 1) Android Studio (חינמי לחלוטין)

זו התוכנה הרשמית של גוגל לפיתוח אפליקציות לנייד.

מיועדת ל:

  • כתיבת קוד לאפליקציה
  • הידור (Build)
  • העלאה לטלפון
  • בדיקות

היכן מוצאים:

  1. פותחים דפדפן כרום
  2. הולכים לכתובת:
    Google → “Android Studio Download”
    (זה האתר הרשמי של גוגל)

מה להוריד:

  • קובץ התקנה לשולחן העבודה (Windows / Mac / Linux)

האם זה חינמי? ✔ כן, 100% חינמי.
✔ אין גרסת Pro בתשלום.

מה מתקינים בתוכה? כאשר Android Studio נפתח בפעם הראשונה:

  • מתקינים SDK אוטומטי
  • מתקינים כלי Build
  • מתקינים Drivers אוטומטיים (לפי צורך)

💡 זמן התקנה — בין 5 ל‑15 דקות.


✔️ 2) Python (אופציונלי, חינמי לגמרי)

אתה צריך אותו רק אם אתה רוצה לנתח את הקובץ שהטלפון מייצר (מפת AP + GPS).

אם אתה רוצה רק להריץ את הניסוי בטלפון — לא חובה להתקין.


🟩 חלק 2 — מה מתקינים בטלפון

באנדרואיד לא צריך להתקין כלום מה־Play Store.

הטלפון מגיע מוכן, רק צריך להפעיל “מצב מפתחים”.


✔️ 1) להפעיל Developer Options (צעד צעד)

  1. פתח “הגדרות” בטלפון
  2. גלול למטה → “אודות הטלפון”
  3. היכנס ל־“מידע על תוכנה” (בסמסונג)
  4. לחץ 7 פעמים על Build Number
  5. תופיע הודעה:
    “You are now a developer”

✔️ 2) להפעיל USB Debugging

  1. חזור ל־הגדרות
  2. פתח “אפשרויות למפתחים (Developer options)”
  3. הפעל:
    ✔ USB debugging
  4. אשר את ההודעה שקופצת

✔️ 3) לחבר את הטלפון למחשב

  1. חבר כבל USB איכותי
  2. בטלפון תופיע הודעה:
    “Allow USB debugging?”
  3. בחר:
    ✔ Allow
    ✔ Always allow from this computer

זהו — הטלפון מוכן לקבל קוד.


🟧 חלק 3 — איך מעלים את הקוד לטלפון (החלק הכי חשוב)

כאן אתה מקבל מדריך איטי וברור, בלי “לקפוץ שלבים”.


✔️ שלב 1 — פותחים Android Studio במחשב

תראה חלון כזה עם כפתורים:

  • New Project
  • Open
  • More actions

אתה תבחר:
✔ New Project
✔ Empty Activity
✔ Next
✔ Finish

Android Studio ייצור לך אפליקציה ריקה.


✔️ שלב 2 — מחליפים את הקבצים בקוד שנתתי לך

אתה צריך 3 קבצים עיקריים:

  1. MainActivity.kt
  2. AndroidManifest.xml
  3. activity_main.xml

פשוט:

  • פותחים את הקובץ
  • מוחקים את מה שיש
  • מדביקים את הקוד שנתתי

✔️ שלב 3 — מוסיפים את קובץ ה‑JSON

בתוך Android Studio:

  1. לחץ על
    app → src → main
  2. לחץ ימני על main
    ✔ New →
    ✔ Folder →
    ✔ Assets Folder
  3. בתוך התיקייה נוצר:
    assets
  4. לחץ ימני על assets →
    ✔ New → File
  5. שם הקובץ:
    wifi_locations.json

הדבק בפנים את תוכן טבלת 100 הראוטרים.


✔️ שלב 4 — מחברים את הטלפון למחשב (USB)

בטלפון:

  • USB debugging פעיל
  • Allow USB debugging
  • מאפשר גישה למחשב

ב־Android Studio למעלה, ליד כפתור ▶, תראה את שם המכשיר שלך.

לדוגמה: SM-G985F Android 14


✔️ שלב 5 — מריצים את האפליקציה על הטלפון

לוחצים על כפתור: ▶ Run

תהליך:

  • Android Studio בונה את האפליקציה (Build)
  • מתקין אותה על המכשיר
  • האפליקציה נפתחת בטלפון לבד

כל פעם שתלחץ Run: ✔ גרסה חדשה תעלה לטלפון
✔ אוטומטית


✔️ שלב 6 — בדיקת הניסוי

במסך האפליקציה יש 2 כפתורים:

  1. סריקת Wi-Fi + GPS
    ⇒ יוצר רשומות של ראוטרים + נ״צ

  2. שמור לקובץ
    ⇒ יוצר קובץ JSON עם כל הסריקות

הקובץ יישמר בתיקייה:

/Android/data/שם_האפליקציה/files/wifi_map.json

אתה יכול: ✔ לשתף אותו לעצמך
✔ להעביר למחשב
✔ לנתח אותו ב‑Python (אם תרצה)


📌 שאלות שאתה בטוח עוד עומד לשאול

❓ האם כל התוכנות חינמיות?

כן, כולן 100% חינמיות:

  • Android Studio
  • Python
  • כל הכלים הנלווים

❓ האם צריך לשלם כדי להעלות אפליקציה לטלפון?

לא.
זה בחינם.

❓ האם צריך חשבון גוגל מיוחד?

לא.
חשבון רגיל מספיק (ואפילו זה לא חובה).

❓ האם אני צריך להעלות את האפליקציה ל‑Play Store?

לא!
מעלים ישירות לטלפון.


🎁 רוצה שאני אכין לך:

1️⃣ ZIP מוכן עם כל הקוד, התיקיות, ה‑JSON והמבנה?

2️⃣ APK מוכן להתקנה בלי Android Studio?

3️⃣ מדריך וידאו קצר (טקסטואלי)?

4️⃣ פרויקט מתקדם יותר שמציג מפה חיה?

תגיד לי מה נוח לך — ואני מכין.

אין תגובות:

הוסף רשומת תגובה

הפוסטים הבולטים

מערכת שידור מיקום ע"י WIFI עם מפה

  הבנתי אותך אבי — אתה רוצה “מפה חיה” (Live Map) : כלומר אפליקציה בנייד שמציגה בזמן אמת על מפה את המיקום שלך כפי שנקלט מ־Wi‑Fi + GPS, ושכבת...

פוסטים