- One mobilszolgáltatások
- Garmin Instinct – küldetés teljesítve
- Netfone
- iPhone topik
- Poco X6 Pro - ötös alá
- Végre bemutatkozott a Google Pixel 4a
- Ezek a OnePlus 12 és 12R európai árai
- Megmutatta a Google az Android 16 Material 3 Expressive felületét
- Xiaomi 13T és 13T Pro - nincs tétlenkedés
- Okosóra és okoskiegészítő topik
Új hozzászólás Aktív témák
-
shinodas
tag
Sziasztok Srácok!
Még mindig Bluetoothal szenvedek.
Van egy activity, amiben a párosított eszközöket listázom ki. Azt szeretném elérni, hogy ha kiválasztok egy eszközt, ahhoz csatlakozzon. A csatlakozás részt egy másik activity tartalmazza. Gondolom, hogy a kiválasztott lista elemet kellene átadni a másik activitynek, hogy ahhoz csatlakozzon. Egyáltalán jó a csatlakozós activitym?
Remélem valaki tud segíteni -
RexpecT
addikt
Valaki foglalkozott már a Google Cloud Messagingel?
Ez alapján csináltam mind a kliens mind a szerver oldalt: [link]
A példában egy külön Activitybe van beregisztrálva a BroadcastReceiver, én pedig a saját servicem OnCreate metódusában regisztrálom( tehát két servicem van egy GCMIntentService és egy saját amiben például a Bluetooth kommunikáció is folyik). Működik is a dolog hellyel közzel, sajnos nem mindig kapom meg az üzenetet, ezen általában egy wifi on-off segít a dolgon.
Valakinek van esetleg ötlete?
-
pittbaba
aktív tag
Lehet nem ide illik ezt, de hátha van tapasztalatotok:
Lehet olyan, hogy az egy tápra kötött IOIO board egy leddel, és az LG GT540 megy 60-70% procival alapjáraton (fent egy webserver a telon..) akkor jobban merül, mint ahogy a töltő tölteni tudja? Egy idő után leszakad a board, és szerintem azért..5.7V 1000 mA a táp, van szufla..
-
Agyasima
őstag
Olyan android programot lehet-e csinálni, ami tudja az alábbit:
- FTP/SFTP kapcsolattal letölt egy fájlt (mondjuk egy XML-t pl.) egy bizonyos helyről
- ami alapján készít egy listát az XML-ben található tételekről
- a listából kiválasztunk egy tételt, amihez rögzítünk 5-6 fotót és 2 számot
- és ezt az 5-6 fotót és 2 számot feltölti FTP-n/SFTP-n keresztül egy adott helyre, ahol - mondjuk - "az adott nap & adott napi sorszám" névvel csinál is a fájloknak egy könyvtárt és abba teszi be a fentieketElméletben megoldható a dolog?
-
pittbaba
aktív tag
Áhh szóval így hívják ezt a megoldást
Az IOIO Looper miatt kellett ilyet használnom, példában volt, és nagyon jól működik!
A Handler is dolgozik szépen, végre készen lett az AppTelefon hívásával szám alapján és Bluetooth mac alapján adatbázisból kérdezve jogosultnak nyitja az ajtót a kis IOIO board. Nagyon jó ketyere, ajánlom mindenkinek, lehet automatizálni a pecót!
-
Sianis
addikt
válasz
pittbaba #790 üzenetére
Egyébként azt mondanám, hogy AndroidAnnotations idevágó része.
Írsz egy metódust, megtoldod @UiThread(delay=6000) annotációval és elfelejted a problémát egy percen belül. Ezzel bebiztosítod, hogy főszálon fusson és 6mp várakozás legyen a tényleges futtatása előtt.
Én minden új projektemben alapból használom az Annotations-t, mert nagyon felgyorsítja a fejlesztést, illetve csökkenti a repetatív feladatokat is.
Sianis
-
fatal`
titán
Nem igazán Android, sima java, de ez a topic jobban pörög:
Private nested classban szokás getter-settert használni, mi az általános konvenció? Azért kérdezem, mert a külső osztály is eléri belső fieldjeit, akkor is, ha az private.
-
RexpecT
addikt
Sikerült elakadnom GCM implementálásánál, de maga a probléma nem ehhez kapcsolódik, hanem az alábbi hibaüzenetet dobja az app:
"Unable to find explicit activity class {com.example.testhttps/com.example.testhttps.GCMIntentService}; have you declared this activity in your AndroidManifest.xml?"
Gomb:
Button gcmButton=(Button) findViewById(R.id.gcmButton);
gcmButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Intent gcmIntent= new Intent(context,GCMIntentService.class);
startActivity(gcmIntent);
}
});Manifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.testhttps"
android:versionCode="1"
android:versionName="1.0">
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.USE_CREDENTIALS"/>
<uses-permission android:name="android.permission.READ_OWNER_DATA"/>
<permission
android:name="com.example.testhttps.permission.C2D_MESSAGE"
android:protectionLevel="signature"/>
<uses-permission android:name="com.example.testhttps.permission.C2D_MESSAGE"/>
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17"/>
<application
android:name="com.example.testhttps.MyApplication"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:name="com.example.testhttps.TestHttpsMain"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity
android:name="com.example.database.ViewRecord"
android:label="@string/title_activity_view_record">
</activity>
<activity
android:name="com.example.bluetooth.DeviceListActivity"
android:label="@string/title_activity_device_list_activity">
</activity>
<activity
android:name=".GCMMainActivity"
android:label="@string/title_activity_gcm_main_activity">
</activity>
<service
android:name="com.example.service.MyService"
android:enabled="true"
android:icon="@drawable/ic_launcher"
android:label="MyService"/>
<receiver
android:name="com.google.android.gcm.GCMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE"/>
<action android:name="com.google.android.c2dm.intent.REGISTRATION"/>
<category android:name="com.example.testhttps"/>
</intent-filter>
</receiver>
<service
android:enabled="true"
android:name=".GCMIntentService">
</service>
</application>
</manifest>Ennek pedig elvileg így mennie kellene...
-
Sianis
addikt
válasz
WonderCSabo #783 üzenetére
Feltételeztem, hogy az ASyncTaskot a főszálról indítja. És annak az onPostExecute része szintén ott fut. Illetve nem is feltétlenül lényeges hol fut, mivel egy static változó, jelen esetben boolean értékét bárhonnan meg tudja változtatni.
Sianis
-
pittbaba
aktív tag
válasz
WonderCSabo #778 üzenetére
Köszönöm!
A httpclient végül jobb megoldásnak bizonyult, mert jobban tudom kezelni a különböző hibákat. Egyébként igen timeout, illetve wifiről való leszakadozás okozta a kivételeket.
Most feltettem egy webservert a telefonra, így biztos nincs wifiről szakadozásÚjabb kérdésem:
Async taskban szeretnék egy boolean-t ha feltételek rendben vannak átbillenteni igaz-ra, majd 6mp múlva visszatenni false-ra. Async taskban ha megjön a JSON eredmény rendben, akkor kell, hogy a változó 6mp-ig true legyen. Thread.sleep(6000); nem jó, az utána következő parancsok is azonnal futnak le, nem várakozás után. Ez miért lehet, illetve mi a megoldás? A timerre gondoltam, h 6mp-ként megnézi az értékét és ha true, akkor átbillenti false-ra, viszont ha a timer éppen a 4. mp-nél jár, amikor átbillen true-ra a változó, majd 2mp múlva teszi false-ra az nem jó nekem. Hogy szokás ezt megoldani? -
pittbaba
aktív tag
Szerintetek JSON-t weblapról lekérni hogy a legérdemesebb?
Van ez a kód, tök jól működik, amikor működik, de néha IOExceptiont okoz, nem értem miért.Jó megoldás ez, vagy inkább httpClient?
public static String getJsonFromServer(String url) throws IOException {
BufferedReader inputStream = null;
URL jsonUrl = new URL(url);
URLConnection dc = jsonUrl.openConnection();dc.setConnectTimeout(5000);
dc.setReadTimeout(5000);
inputStream = new BufferedReader(new InputStreamReader(
dc.getInputStream()));// read the JSON results into a string
String jsonResult = inputStream.readLine();return jsonResult;
} -
fatal`
titán
válasz
holczhauser #773 üzenetére
AndEngine vagy libgdx. Előbbinek nem nincs doksija, de vannak példaprogramok, meg segítőkész community a fórumon, utóbbit nem nagyon ismerem, de elvileg jó a dokumentációja, viszont nehezebb használni.
Én AndEnginet használok/használtam.
-
raggg
senior tag
(#773) holczhauser
Én a LibGDX-et ajánlanám, a weboldalukon elég sok információt találsz róla. Ingyenes!
(sry véletlenül rosszra válaszoltam)
-
holczhauser
csendes tag
Sziasztok !
Android játékfejlesztéshez tudok adni
- jó szakmai irodalmat
- jó keretrendszert ?
2Ds game-eket kellene fejleszteni..
Android tapasztalat: 3 év
Játékfejlesztés: 0 percKöszi , K
-
pittbaba
aktív tag
-
pittbaba
aktív tag
Na soronkénti Log.v segítségével kiderítettem, hogy itt száll el:
inputStream = new BufferedReader(new InputStreamReader(dc.getInputStream()));
Kérdés, hogy miért csak akkor amikor a Timer elindítja a bluetooth pásztázást (sikeresen elindul). Ha viszont kikommentelem a startDiscovery()-t akkor megjön az eredmény szépen, ahogy kell.
-
pittbaba
aktív tag
Logcat mondja:
06-04 10:22:42.079: E/AndroidRuntime(24879): FATAL EXCEPTION: main
06-04 10:22:42.079: E/AndroidRuntime(24879): java.lang.NullPointerException
06-04 10:22:42.079: E/AndroidRuntime(24879): at org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116)
06-04 10:22:42.079: E/AndroidRuntime(24879): at org.json.JSONTokener.nextValue(JSONTokener.java:94)
06-04 10:22:42.079: E/AndroidRuntime(24879): at org.json.JSONObject.<init>(JSONObject.java:154)
06-04 10:22:42.079: E/AndroidRuntime(24879): at org.json.JSONObject.<init>(JSONObject.java:171)
06-04 10:22:42.079: E/AndroidRuntime(24879): at com.example.thedoor.MainActivity$1GetTask.onPostExecute(MainActivity.java:133)
06-04 10:22:42.079: E/AndroidRuntime(24879): at com.example.thedoor.MainActivity$1GetTask.onPostExecute(MainActivity.java:1)
06-04 10:22:42.079: E/AndroidRuntime(24879): at android.os.AsyncTask.finish(AsyncTask.java:631)
06-04 10:22:42.079: E/AndroidRuntime(24879): at android.os.AsyncTask.access$600(AsyncTask.java:177)
06-04 10:22:42.079: E/AndroidRuntime(24879): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
06-04 10:22:42.079: E/AndroidRuntime(24879): at android.os.Handler.dispatchMessage(Handler.java:99)
06-04 10:22:42.079: E/AndroidRuntime(24879): at android.os.Looper.loop(Looper.java:137)
06-04 10:22:42.079: E/AndroidRuntime(24879): at android.app.ActivityThread.main(ActivityThread.java:4931)
06-04 10:22:42.079: E/AndroidRuntime(24879): at java.lang.reflect.Method.invokeNative(Native Method)
06-04 10:22:42.079: E/AndroidRuntime(24879): at java.lang.reflect.Method.invoke(Method.java:511)
06-04 10:22:42.079: E/AndroidRuntime(24879): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
06-04 10:22:42.079: E/AndroidRuntime(24879): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558)
06-04 10:22:42.079: E/AndroidRuntime(24879): at dalvik.system.NativeStart.main(Native Method) -
pittbaba
aktív tag
Újabb kérdés:
Még nem értem pontosan, de úgy tűnik, valamiért elszáll az app miközben a háttérben fut egy async task(egy json lekérés), a Timer indít egy startDiscovery(); metódust.
Mi okozhatja? -
pittbaba
aktív tag
Érdekes, mert kipróbáltam azt, hogy feliratkozok a ACTION_DISCOVERY_FINISHED eseményre, és ott újra indítom a Discovery-t, de valamiért a ACTION_DISCOVERY_FINISHED esemény soha nem következik be, pedig megjönnek szépen az eredmények a talált eszközökről.
-
shinodas
tag
Van egy ilyen kódom:
package com.example.bluetooth_linugz;
import java.util.Iterator;
import java.util.Set;
import java.util.UUID;
import android.os.Bundle;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends Activity {
Set<BluetoothDevice> pairedDevices;
BluetoothAdapter btInterface;
BluetoothSocket socket;
String ROBOTNAME = "peter-VPCEH1M1E-0";
UUID MY_UUID;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void findRobot (View v){
try{
btInterface = BluetoothAdapter.getDefaultAdapter();
pairedDevices = btInterface.getBondedDevices();
Iterator<BluetoothDevice> it = pairedDevices.iterator();
while(it.hasNext()){
BluetoothDevice bd = it.next();
if(bd.getName().equalsIgnoreCase(ROBOTNAME)){ //ha a listában van a megadott eszköz, akkor csatlakozni próbál
MY_UUID = bd.getUuids()[0].getUuid();
connectToRobot(bd);
return;
}
}
}catch(Exception e){
String tag = "Első";
Log.e(tag, "Failed in findRobot() " + e.getMessage());
}
}
private void connectToRobot(BluetoothDevice bd) {
try{
//socket = bd.createRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));
socket = bd.createRfcommSocketToServiceRecord(MY_UUID);
socket.connect();
}catch(Exception e){
String tag = "Második";
Log.e(tag, "Error interacing with remote device [" + e.getMessage() + "]");
}
}
}Egy ubuntut futtató laptophoz szeretnék még csak simán csatlakozni, viszont a csatlakozásnál "Connection reset by peer" üzenetet kapok logcatban. Mi lehet a gond?
-
pittbaba
aktív tag
Sziasztok!
Éppen én is a bluetooth részt csinálom az appomhoz, nekem annyi kellene, hogy ha közelben elsétál egy látható bluetooth eszköz, akkor annak megkapjam a paramétereit. Sikerül az app elindításával startDiscovery();-vel egy alkalommal kinyerni a közelben levő eszközök listáját, de hogy tudom ezt megoldani úgy, hogy állandóan scanneljen? (A telefon örökkön örökké tápon csücsül, nem para az aksi)
-
sztanozs
veterán
Gondolom BT/Com-interfészen keresztül jön a cucc. Erre kell írni receivert (ja és érdemes folymatosan követni a BT állapotát, nehogy a lecsatlakozás miatt FC-ve elszálljon a program). Gondolom a gyári példa megvan: [link]
Ja igen, szervízben érdemes megoldani az adatfogadást. -
RexpecT
addikt
Üdv!
Egy appot akarok írni, ami folyamatosan kapcsolatban van egy külső bluetooth eszközzel, ha arról adat érkezik akkor elmenti egy lokális adatbázisba.
Azt már megoldottam, hogy alkalmazáson belül elkérjem a cél eszköz MAC címét, viszont nem vagyok teljesen biztos benne, hogy milyen irányba is menjek.
Elvileg ha írok egy saját Service-t amibe lesz egy Thread ami folyamatosan kapja és nyugtázza az adatokat az ugye jó megoldásnak tűnik? -
pittbaba
aktív tag
Szia!
Megint csak nem baj, ha root kell. Ajtónyitót csinálok, a telefon meg az ioio egy dobozban fog csücsülni, így a root-al nincs gond. A módszer érdekelne, mert csak azt találom mindenhol hogy impossible. Van egy megoldás, de az már a permission-ök miatt nem működik elavult megoldás, nekem nem is sikerült.
Engem pont ez mozgat, hogy van egy csomó call blocker program, én meg nem tudom megoldani...
-
Sianis
addikt
Sziasztok!
Elméleti kérdés következik:
Adott két Fragment, az egyik egy ListView, a másik egy egyedi nézet, amiben más activity-k létrehozhatnak, módosíthatnak, törölhetnek elemeket. Hogyan oldanátok meg, hogyha az adathalmaz változik, akkor ezek a nézetek értesüljenek arról, hogy mi történt?
Én két megoldást látok:
- BroadcastReceiver. A Fragmentek definiálják, hogy milyen eseményekre érzékenyek, aztán amikor kell akkor reagálnak szépen. Nem tudom, hogy itt megoldható-e, hogy a ListView módosításai animálódjanak, tehát ne a háttérben történjen meg az adapter módosítása.
- onActivityResult. Ezzel az a baj, hogyha egy ViewPager-ben vannak a fragmentek és mondjuk két egymás mellett lévő fragmentnek is frissülnie kell, akkor itt már problémás az események elosztása. Vicces, de néha egy isAdded() hívásra igazat adó fragment is elszáll olyan hibával, hogy ő már nincs is a FragmentManagerben.Én a BroadcastReceivert érzem most jobbnak, de cáfoljatok rám.
Köszi a válaszokat előre is!
Sianis
-
pittbaba
aktív tag
-
thon73
tag
válasz
pittbaba #751 üzenetére
A problémával csak felhasználóként találkoztam. [link] Ez a program olyat tud, hogy az előtérbe került hívást (még a hallgató felvétele előtt!!) háttérbe nyomhatod, ahonnét később (amíg a hívás tart) előtérbe lehet venni, és felvenni. Tehát elvileg megoldható.
((Mielőtt valaki megkérdezné, hogy ez mire jó: hosszú úton SVOX-szal szoktam könyvet felolvastatni. De ha hívás érkezik, akkor a felolvasás megszakad, majd a telefon felvétele után beleolvassa a könyvet a telefonba. Na ezt szoktam befejezni egy mozdulattal, mielőtt fogadom a hívást.)) -
pittbaba
aktív tag
És még egy kérdés: Meg lehet e oldani valahogy, hogy mikor hívják a telefont, a hívás maradjon a háttérben, és az alkalmazás az előtérben?
Sajnos onDestroy-t okoz az alkalmazásban, ha hívják a telefont, ami nekem nagyon kellemetlen, mert az IOIO board is leszakad a programtól, és nullázódnak az állapotok.
Új hozzászólás Aktív témák
- Superconsole X2PRO retro játékkonzol 70000 játékkal + android box egyben
- Dell Vostro 5581 (Intel i7, 16 GB RAM, 256 m2 SSD)
- Vivo x200 Pro 16/512GB (Új)
- Samsung Galaxy Tab S9 Wifi 128/8GB - Új, bontatlan, 2 év garancia
- Acer Nitro 5 -AN515 - 15.6"FHD IPS 144Hz - i7-11800H - 16GB - 512GB SSD+1TB HDD -RTX 3050 - Garancia
- Samsung Galaxy Watch 5 /12 Hó Garanciával
- iKing.Hu - Google Pixel 9 Pro Fold - Obsidian - Használt karcmentes
- T Phone Pro 128GB, Kártyafüggetlen, 1 Év Garanciával
- Huawei P20 Lite 64GB, Kártyafüggetlen, 1 Év Garanciával
- AKCIÓ! MSI B450M R5 5500 16GB DDR4 512GB SSD ROG RX VEGA 56 8GB Rampage SHIVA Thermaltake 530W
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest