ja dann zeige das mal imgesammten wie du es jetzt hast.
so ohne code ist hilfe sehr schwer.
Beiträge von nono124
-
-
Hallo
Also ich würde sagen deine Host Adresse ist falsch. Die wird nicht aufgelöst.
Teste es im Browser.Benutze mal die IP Adresse .zb 104.31.67.161
Oder benutze den richtigen String der auch aufgelöst werden kann.
public static final String SERVER_HOST = "Meinhost.de";
ist falschpublic static final String SERVER_HOST = www.mine-host.de;
sollte es wohl heißen. -
wie verhält es sich wenn du eine signed apk erstellst dise ohne debugging auf dem Handy installierst und dabei auch keine debugg Verbindung zum pc hast.
Ist es da auch so?Edit: 24 Threads laufen zu dem Zeitpunkt laut Profiler.
Ist schon eine ganze Menge.
Wieso so viele. Beendest du sie Nicht .und erstellst ständig neue.
So wie es aussieht brachen wir wirklich den Code in eine Aussage machen zu können, -
Hallo was ist das für ein Handy ein altes langsames.
Wie viele threads werden den zu gleichen Zeit ausgeführt?
Ist etwas der Main Thread stark belastet versucht der etwa etwas anderes zu machen.
Hast du etwa ein sehr komplex layout. Mit großer verschachtelung.
Beim linearerlayout sollte die verschachtelung nicht tiefer als 5 sein sonst sinkt die Performance.Wo tritt das auf laut dem Titel in eine Liste oder?
Wie gross wie viele Einträge hat die Liste?
Sind große Bilder Grafiken enthalten?Was hast du genommen eine listview oder das neuere resyclerview was leistungs stärker ist vor allen bei langen komplexen listen.
-
Ich denke das müsste eine Art Dialer der auch auf die Kontakte zugreift werden .
Die Termine entweder in einer eigenen DB oder in auch den Kalender benutzen um Termine zu setzen und zu speichern.Da wirst du wohl etwas mit den Android Systemapps Probieren müssen und diese vielleicht über einen Intent mit Result starten.
Oder eben alles selber machen die Kontakte und den Dialer wirst du wohl brauchen.
-
Hallo
Also wenn du nur C++ kannst also sehr wenige Kenntnisse in Java hast.
Würdeich erst mal m it den Grundlagen Java oder neu Kotlin anfangen.Auch solltest du dich erst mal etwas langsam an das Android Frameworkherantasten und auch darüber einige Grundlagen beherrschen bevor du so ein Projektanfängst.
Das wird die schon eine Menge und Androidspezifische Wissen abverlangen.
-
ok kann auch sein.
zumindest siehst in meinen Code wie du auf variablen der Klasse zugreifenkannst.Vielleicht ist der Grund dafür auch die Software "Norton Mobile Security".
Dann Lösche die mal dann siehst du es nach einem neustart. -
Hier der code von Xscreen mit deinem verändert.
ist zwar eine innere Klasse solte aber auch als eikne klasse gehen.Code
Alles anzeigenpublic class MainActivity extends AppCompatActivity { Button toggleBTButton; BTPanServiceListener bt; Object instance = null; Method setTetheringOn = null; Method isTetheringOn = null; Object mutex = new Object(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); toggleBTButton = findViewById(R.id.toggleBTButton); // Setup Methods try { Class<?> classBluetoothPan = Class.forName("android.bluetooth.BluetoothPan"); Constructor<?> ctor = classBluetoothPan.getDeclaredConstructor(Context.class, BluetoothProfile.ServiceListener.class); ctor.setAccessible(true); Class[] paramSet = new Class[1]; paramSet[0] = boolean.class; synchronized (mutex) { setTetheringOn = classBluetoothPan.getDeclaredMethod("setBluetoothTethering", paramSet); bt= new BTPanServiceListener(getApplicationContext()); isTetheringOn = classBluetoothPan.getDeclaredMethod("isTetheringOn", null); instance = ctor.newInstance(getApplicationContext(), bt); } } catch (ClassNotFoundException ex) { Log.i("MainActivity", "Android-Version not supported!"); ex.printStackTrace(); } catch (Exception ex) { ex.printStackTrace(); } toggleBTButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { //Check if BT-Tethering is on if ((Boolean) isTetheringOn.invoke(instance, null)) { Log.i("MainActivity", "Turn Tethering off"); setTetheringOn.invoke(instance, false); toggleBTButton.setText("Turn on"); Toast.makeText(getApplicationContext(), "" + bt.nowVal, Toast.LENGTH_SHORT).show(); } else { Log.i("MainActivity", "Turn Tethering on"); setTetheringOn.invoke(instance, true); toggleBTButton.setText("Turn off"); Toast.makeText(getApplicationContext(), "" + bt.nowVal, Toast.LENGTH_SHORT).show(); } } catch (Exception ex) { ex.printStackTrace(); } } }); } public class BTPanServiceListener implements BluetoothProfile.ServiceListener { private final Context context; boolean nowVal; public BTPanServiceListener(final Context context) { this.context = context; } @Override public void onServiceConnected(final int profile, final BluetoothProfile proxy) { //Some code must be here or the compiler will optimize away this callback. Log.i("MyApp", "BTPan proxy connected"); try { //boolean nowVal = ((Boolean) proxy.getClass().getMethod("isTetheringOn", new Class[0]).invoke(proxy, new Object[0])).booleanValue(); nowVal = (Boolean) proxy.getClass().getMethod("isTetheringOn", new Class[0]).invoke(proxy, new Object[0]); Toast.makeText(context, "nowVal = " + nowVal, Toast.LENGTH_SHORT).show(); if (nowVal) { // proxy.getClass().getMethod("setBluetoothTethering", new Class[]{Boolean.TYPE}).invoke(proxy, Boolean.FALSE); // proxy.getClass().getMethod("setBluetoothTethering", new Class[]{Boolean.TYPE}).invoke(proxy, Boolean.FALSE); // Toast.makeText(context, "onServiceConnected: Turning bluetooth tethering off", Toast.LENGTH_SHORT).show(); toggleBTButton.setText("Turn on"); } else { // proxy.getClass().getMethod("setBluetoothTethering", new Class[]{Boolean.TYPE}).invoke(proxy, true); //proxy.getClass().getMethod("setBluetoothTethering", new Class[]{Boolean.TYPE}).invoke(proxy, new Object[]{Boolean.valueOf(true)}); //proxy.getClass().getMethod("setBluetoothTethering", new Class[]{Boolean.TYPE}).invoke(proxy, Boolean.TRUE); // Toast.makeText(context, "onServiceConnected: Turning bluetooth tethering on", Toast.LENGTH_SHORT).show(); toggleBTButton.setText("Turn off"); } } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchMethodException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { //Set Button Text if ((Boolean) isTetheringOn.invoke(instance, null)) { toggleBTButton.setText("Turn off"); } else { toggleBTButton.setText("Turn on"); } } catch (Exception ex) { ex.printStackTrace(); } } @Override public void onServiceDisconnected(final int profile) { } } }
Code
Alles anzeigen<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="de.strait.bluetoothtethering"> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/> <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Code
Alles anzeigenapply plugin: 'com.android.application' android { compileSdkVersion 28 defaultConfig { applicationId "de.strait.bluetoothtethering" minSdkVersion 22 targetSdkVersion 28 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'androidx.appcompat:appcompat:1.1.0-alpha04' //implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test:runner:1.2.0-alpha03' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0-alpha03' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' implementation 'com.android.support.constraint:constraint-layout:1.1.3' }
-
hallo würde gern sehen wie das machst bei mir läuft der code von Xcreen ohne den schnick schnak.
-
Hallo
Bei dem Ala Alarmmanager ist der erste wert die Zeit, wenn er das erste Mal gestartet werden soll.
Die ist bei dir nur aktuelle zeit plus eine sec *60.
alarmManager.setRepeating(android.app.AlarmManager.RTC_WAKEUP, now.getTimeInMillis() + (1000 * seconds), 1000 * 60 * 60 * 24, pendingIntent);
berechne die Start zeit mal so
CodeCalendar now = Calendar.getInstance(); int jahr = now.get(Calendar.YEAR); int tag = now.get(Calendar.MONTH)+1; int monat = now.get(Calendar.DAY_OF_MONTH); now.set(jahr, monat, tag, 16, 00); long startTime = now.getTimeInMillis(); alarmManager.setRepeating(android.app.AlarmManager.RTC_WAKEUP, startTime, 1000 * 60 * 60 * 24, pendingIntent);
-
Hallo ich wurde sagen du zeigst noch mal deinen jetzigen Code.
Das einzige was du austauschen oder auf was du aus der Main zugreifen kannst ist deine static Variable. Nur würde ich das anders machen und zwar würde ich die in der Main erstellen und in derBTPanServiceListenerCheck Class darauf zugreifen. -
Hallo also wenn es auf anderen Handys geht und nur auf dem einen nicht würde ich auf das Handy tippen. Denke das sie Hardware im Handy das Threading nicht unterstützt. An die Api glaube ich nicht ich habe es auf einen Samsung S5 mini Android 6 API 23 getestet und geht.
-
-
Hallo zu der Frage Ram Problem. Wie groß wieviel K, MB hat den ein Drawable?
-
Hallo ich noch mal. Wenn ich mir deine "BTPanServiceListenerCheck" Classe anschaue hast du die wohl nicht als innere Classe in der Main. Da du dort eine static Variable hast.
In deiner Main Classe, onCreate kann ich keinen zugriff auf deine static sate Variable erkennen.
-
Hallo ich mische mich mal dazu
Also ich habe auch mal das Test Beispiel von @Xcreen getestet läuft ohne Probleme. Unter AS 3.4 und auch Gradle 5.1.1 habe aber auch die dependencies angepasst.
In der onCreate brauchst du doch nur den Button abfragen. Oder willst du den Button gar nicht haben? Wenn ja mache dir eine Variable in der du den Status speicherst.
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0-alpha04'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0-alpha03'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0-alpha03'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' -
Hallo ich mische mich mal dazu.
Also ich habe auch mal das Test Beispiel von @Xcreen getestet läuft ohne Probleme. Unter AS 3.4 und auch Gradle 5.1.1 habe aber auch die dependencies angepasst.
In der onCreate brauchst du doch nur den Button abfragen. Oder willst du den Button gar nicht haben? Wenn ja mache dir eine Variable in der du den Status speicherst.
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0-alpha04'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0-alpha03'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0-alpha03'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' -
Hallo ich glaube du bringst Array und Liste etwas durch einander. Oder dir ist der Unterschied nicht klar.
In dem gefunden Quellcode wird eine "Liste" oder auch "Array Liste" benutz und nicht ein Array wie bei deinem Code.
Der haupt unterschied ist das ein Array[] statisch ist also zur Laufzeit des Programms sich die größte nicht ändern kann. Wenn du zb ein
Array[10] erstellst dann kannst du nicht Felder Laufzeit hinzufügen. Es sind immer 10.Eine Liste ist ein dynamischer Speicher Bereich "eine verkettete Liste" die du zu Laufzeit erweitern und auch löschen kannst.
Schaue die die Unterschiede in Java noch mal an.
-
Hallo also das was dut vorhast geht.
Nur soldest du dich auch erst mal mit dem erstellen eines Homescreen Widget beschäftigen.
Hier ein link
https://www.vogella.com/tutori…droidWidgets/article.html -
hallo @Resetpin Du bist ja nicht der thrad ersteller habe das auch nicht gleich bemerkt.
Wo genau ist denn dein Problem beim neu compilieren deiner alten Alp die scheinbar noch unter einer alten gerade Version geschrieben wurde. Ist die überhaupt mit as oder noch mit eclipsegeschrieben.
Da in deine gerade fast keine Supportlibs eingebunden werden.
Du arbeitest auch auf sdk 28 und es kann auch sein das 8oder Zwischenzeit einige Methoden nicht mehr verfügbar sind.
Beschreibe mal dein Problem genauer.