Hirdetés
Ú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..
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
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?
toledói csöcsparádé | ''Az ég kék volt, a szemed szürke, én zöldet hánytam...'' | Trutymó terror
-
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 App Telefon 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!PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
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.
-
pittbaba
aktív tag
Igen, az OnPostExecute részben dolgozom fel az eredményt pont e miatt, hogy a főszálban tudjak maradni, így is most már Async, Looper, Timer egy appban már szétesek fejben lassan, de legalább haladok az alapok felderítésével
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
pittbaba
aktív tag
-
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?[ Szerkesztve ]
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
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;
}PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
-
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.
[ Szerkesztve ]
-
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)
[ Szerkesztve ]
ragklaatPS
-
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
válasz pittbaba #770 üzenetére
Úgy néz ki az async json lekérés indítása előtt kellett egy cancelDiscovery, így már nincs hiba. Azért a magyarázatára kíváncsi lennék miért zavarodik be a háttérfolyamat. Elvileg a startDiscovery is aszinkron fut, de ennek nem kellene a másikat zavarnia nem?
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
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.
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
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)PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
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?PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
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.
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
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?
[ Szerkesztve ]
-
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)
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
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.[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
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...
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
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
Köszönöm!
Úgy néz ki megoldódott a probléma, nem kezeltem le az onpause,onstop,onresume állapotokat egyáltalán, üres függvényeket beraktam most már nem szakad le a board, és csinálja amit kell.
Viszont a hívás visszautasítást még mindig nem találom sehol jól.
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
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.PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
Új hozzászólás Aktív témák
Hirdetés
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest