KRIEGSSPIELE!
Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.

Черновик: Пошаговое создание форта на java

Участников: 2

Страница 2 из 2 Предыдущий  1, 2

Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор vikt144 Ср Фев 12, 2020 11:38 pm

Копирует текст
https://pastebin.com/byfaexHG
в файл main.xml
 
Код:
               <Button
                    android:id="@+id/btn0"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="set on">
                </Button>

Здесь
android:id="@+id/btn0"  В mainActivity.java переменная будет определяться
Button btn0;
android:text="set on">  - начальный текст на кнопке будет <set on>

так как кнопка находится внутри вложенного LinearLayout,  имеющей атрибут
android:orientation="horizontal"> то она расположится по горизонтали
вместе с другими тремя кнопками.
Код:
     <TextView
  android:id="@+id/text0"
  android:text="nomesssge"

  android:layout_width="wrap_content"
  android:layout_height="wrap_content">
  </TextView>
назначение android id,text тут такое же, как и с кнопками.
Элемент может растягиваться в разные стороны, в зависимости от размеров текста,
переводов строк итд.
В ява коде ему можно присвоить текст так,
text0.setText("ON " );

Код:
          <EditText
            android:id="@+id/edText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    </EditText>

для редактирования текста. Извлечь можно
String gtext = edText.getText().toString();
Это не очень простой элемент, почитать можно тут
http://developer.alexanderklimov.ru/android/views/edittext.php
Пожалуй перепишу main.xml сюда

vikt144

Сообщения : 128
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор vikt144 Ср Фев 12, 2020 11:40 pm

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



     <TextView
         android:id="@+id/text0"

         android:text="nomesssge"

         android:layout_width="wrap_content"
         android:layout_height="wrap_content">
     </TextView>


    <LinearLayout
      android:layout_width="match_parent"
      android:layout_height="wrap_content"

      android:orientation="horizontal">
 


               <Button
                  android:id="@+id/btn0"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:text="set on">
               </Button>

               <Button
                  android:id="@+id/btn1"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:text="set off">
               </Button>

              <Button
                  android:id="@+id/btn2"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:text="empty">

               </Button>

              <Button
                  android:id="@+id/btn3"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:text="empty">

               </Button>      

  </LinearLayout>
 

              <Button
                  android:id="@+id/btn4"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:text="get text">

               </Button>      

          <EditText
          android:id="@+id/edText"
          android:layout_width="match_parent"
          android:layout_height="wrap_content">
       </EditText>


       <TextView
         android:id="@+id/text1"
         android:text="stat"

         android:layout_width="wrap_content"
         android:layout_height="35dp">
     </TextView>



</LinearLayout>

<!--
comments  -->

vikt144

Сообщения : 128
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор vikt144 Чт Фев 13, 2020 12:18 am

Это все для стандартной ориентации экрана.
Если еще требуется использовать ландшафтную(телефон на боку),
то в каталоге res надо добавить подкаталог layout-land,
с именами файлов, что и в подкатологе layout.
Эти xml файлы должны содержать те же элементы,
что и исходные файлы, только расположить их надо
оптимально для ландшафтной ориентации
Читать об этом тут
http://developer.alexanderklimov.ru/android/orientation.php

Важно! Файл, который находится в каталогах layout и layout-land не обязательно должен называться main,
его название должно совпадать с названием, указанным в activity

Об этом дальше

vikt144

Сообщения : 128
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор vikt144 Чт Фев 13, 2020 1:34 am

Теперь переходим в
src/main/java/<path>/MainActivity.java
копируем туда
https://pastebin.com/aUML6mpN

пожалуй проще вставить сюда и комментировать моменты.
//-------------------------------------------------------

  package com.virf.less;
//  название пакета - совпадает с src/main/java/com/virf/less
// тут находятся файлы java

import android.app.*;
import android.os.*;
import android.os.Bundle;
import android.os.Environment;
import android.util.*;

import android.content.pm.ActivityInfo; //  тут нужен для ориентации экрана

import android.app.Activity;
 


import android.view.KeyEvent.Callback ;

import android.view.*;  //KeyEvent SurfaceHolder; SurfaceView;

import android.view.View;
import android.view.View.*;  //OnClickListener

import android.widget.*;   

import java.util.*;
import java.util.List;

 

public class MainActivity extends Activity implements OnClickListener {


  TextView text0;
  TextView text1;
    
  Button btn0;
  Button btn1;
  Button btn2;
  Button btn3;
  Button btn4;
 
  EditText edText;
     
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);           
// Внимание  R.layout.main - здесь main название xml файла  в папке res/layout

    text0 = (TextView) findViewById(R.id.text0);    
    text1 = (TextView) findViewById(R.id.text1);  
// поиск элементов, описанных в main.xml

    btn0=(Button) findViewById(R.id.btn0);     // поиск кнопки
      btn0.setOnClickListener(this);                  //   и устанавливается обработчик
    btn1=(Button) findViewById(R.id.btn1);
      btn1.setOnClickListener(this);  
    btn2=(Button) findViewById(R.id.btn2);
      btn2.setOnClickListener(this);
   btn3=(Button) findViewById(R.id.btn3);
      btn3.setOnClickListener(this);   
   btn4=(Button) findViewById(R.id.btn4);
      btn4.setOnClickListener(this);  
    
   edText=(EditText)findViewById(R.id.edText);

  setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
// Принудительная установка портретной ориентации
// Для ландшафтной следует писать
// setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION__LANDSCAPE);
//  Если програмно менять ориентацию экрана в процессе выполнения,
// это будет перевызывать этот метод onCreate
);

}

   
    @Override
    public void onClick(View v) {
        // по id определеяем кнопку, вызвавшую этот обработчик
        switch (v.getId()) {
        
            case R.id.btn0 :
                text0.setText("ON " );  //присваивает текстовому полю вверху значение ON  
 
            break;        
            case R.id.btn1 :
                text0.setText("OFF " );  
 
            break;            
    
            case R.id.btn4 :
                String gtext = edText.getText().toString();    // получает текст из поля ввода
                if ( ! gtext.equals("") )                         // если текст не равен ""
                    btn2.setText(gtext);                      // то этот текст присваивается 2 кнопке
 
            break;        
        }//switch
       // две кнопки btn2 и btn3 остались без обработчика
    }//click    
 
}//all

//----------------------------------------------------

vikt144

Сообщения : 128
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор vikt144 Чт Фев 20, 2020 1:11 am

Скачать можно тут
https://anonfile.com/1c9fr1b4o7/less0_7z

Это простейший проект, слегка отредактировав который, можно использовать
для тестирования компонентов, работающих с  некоторыми весьма мутными
функциями android api, прежде, чем тащить их в основной проект.

Добавим еще некоторые полезные элементы.
Работа с несколькими экранами.
Ничего сложного.
 Создаем новый проект,  назовем less1
копируем файл из main.xml старого проекта, в файл main.xml
нового проекта.
Только заменим в определение самой первой кнопки

             <Button
                  android:id="@+id/btn0"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:text="set on">
               </Button>
  android:text="set on">  на что то типа      android:text="startAbsolute">

Потом создаем новый файл, назовем absl.xml и копируем туда
следующий текст

vikt144

Сообщения : 128
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор vikt144 Чт Фев 20, 2020 1:24 am

<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
    android:layout_width="fill_parent"
 android:layout_height="fill_parent">
   
     <Button
         android:id="@+id/btn0"
         android:layout_x="10dp"
         android:layout_y="5dp"
         android:layout_width="70dp"
         android:layout_height="70dp"
         android:text="jump">
     </Button>

     <Button
         android:id="@+id/btn1"
         android:layout_x="90dp"
         android:layout_y="5dp"
         android:layout_width="70dp"
         android:layout_height="70dp"
         android:text="Jmp">
     </Button>


     <Button
         android:id="@+id/btn2"
         android:layout_x="180dp"
         android:layout_y="5dp"
         android:layout_width="70dp"
         android:layout_height="70dp"
         android:text="return">
     </Button>
    
     <Button
         android:id="@+id/btn3"
         android:layout_x="100dp"
         android:layout_y="300dp"
         android:layout_width="70dp"
         android:layout_height="70dp"
         android:text="base">
     </Button>
    
      <TextView
          android:id="@+id/text0"
          android:text="nomesssge"
          android:layout_x="10dp"
          android:layout_y="270dp"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content">
      </TextView>

           <EditText
            android:id="@+id/edText"
            android:layout_width="match_parent"
            android:layout_height="70dp"
          android:layout_x="10dp"
          android:layout_y="120dp">
        </EditText>

      <TextView
          android:id="@+id/text1"
          android:text="stat"
          android:layout_x="10dp"
          android:layout_y="90dp"
          android:layout_width="wrap_content"
          android:layout_height="35dp">
      </TextView>   
        
</AbsoluteLayout>

Тут вместо <LinearLayout используется AbsoluteLayout>
  Здесь используется прямое указание координат элементов,
а не относительное их расположение. Элементы можно программно
перемещать в процессе работы, что позволяет настраивать экран
хирургически, чтобы нужные кнопки были отжаты до того,
как прибор вытащат из кармана.

vikt144

Сообщения : 128
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор vikt144 Чт Фев 20, 2020 1:54 am

Что бы создать новый экран, нужно прописать новое activity в манифесте

отредактируем файл app/src/main/androidManifest.xml

В содержимое файла

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.examp.abs" >

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        android:resizeableActivity = "true">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

 

    </application>
</manifest>

добавим строчки

        <activity
        android:name=".abslayout">
    </activity>

Получим
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.examp.abs" >

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        android:resizeableActivity = "true">
        <activity
            android:name=".MainActivity"
            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=".abslayout">
    </activity>
 

    </application>

</manifest>

Здесь ".abslayout"   имя класса   abslayout.java, который будет обрабатывать
экран.
 Каждый экран должен быть прописан в манифесте обязательно.

vikt144

Сообщения : 128
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор vikt144 Чт Фев 20, 2020 2:24 am

Копируем в главный класс,
(в aide называется обычно MainActivity.java и первый прорисывается в
манифесте с атрибутом <action android:name="android.intent.action.MAIN")


package com.examp.abs;  // эту строчку не копируем -  оставляем такой,
                                          // какой сделала среда программирования.

import android.app.*;
import android.os.*;
import android.os.Bundle;
import android.os.Environment;
import android.util.*;
//добавленные api
import android.content.pm.ActivityInfo; //  тут нужен для ориентации экрана
import android.content.Intent;
import android.content.Context;

import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;

import android.app.Activity;

 
import android.view.KeyEvent.Callback ;

import android.view.*;  //KeyEvent SurfaceHolder; SurfaceView;

import android.view.View;
import android.view.View.*;  //OnClickListener

import android.widget.*;  

import java.util.*;
import java.util.List;

 
public class MainActivity extends Activity implements OnClickListener {

  TextView text0;
  TextView text1;
   
  Button btn0;
  Button btn1;
  Button btn2;
  Button btn3;
  Button btn4;
 
  EditText edText;
    
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

    text0 = (TextView) findViewById(R.id.text0);   
    text1 = (TextView) findViewById(R.id.text1); 

    btn0=(Button) findViewById(R.id.btn0);
      btn0.setOnClickListener(this);
    btn1=(Button) findViewById(R.id.btn1);
      btn1.setOnClickListener(this); 
    btn2=(Button) findViewById(R.id.btn2);
      btn2.setOnClickListener(this);
   btn3=(Button) findViewById(R.id.btn3);
      btn3.setOnClickListener(this);  
   btn4=(Button) findViewById(R.id.btn4);
      btn4.setOnClickListener(this); 
   
   edText=(EditText)findViewById(R.id.edText);


  setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

  
    }//oncreate
 
  
    @Override
    public void onClick(View v) {
        // по id определеяем кнопку, вызвавшую этот обработчик
        switch (v.getId()) {
       
            case R.id.btn0 :
                         Intent intent = new Intent(this, abslayout.class);
                          startActivity(intent);
                // тут  abslayout.class, имя вызываемого класса, соответствующий
              // abslayout.java
           break;       
 
 
        }//switch

    }//click   
 
 
    @Override
    protected void onPause() {  

        super.onPause();
    }

     @Override
    protected void onResume() { 

        super.onResume();       
    }

    @Override
     protected void onDestroy() {
        super.onDestroy();
        }

 
}//all

vikt144

Сообщения : 128
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор vikt144 Чт Фев 20, 2020 2:51 am

Теперь создаем файл abslayout.java в той же папке, где
MainActivity.java и пишем туда

package com.examp.abs;  // тут тоже, что и в MaiActivity

import android.app.*;
import android.os.*;
import android.os.Bundle;
import android.os.Environment;
import android.util.*;

import android.content.pm.ActivityInfo; //  тут нужен для ориентации экрана
import android.content.Intent;
import android.content.Context;

import android.app.Activity;
 
import android.view.KeyEvent.Callback ;

import android.view.*;  //KeyEvent SurfaceHolder; SurfaceView;

import android.view.View;
import android.view.View.*;  //OnClickListener

import android.widget.*;  

import java.util.*;
import java.util.List;

public class abslayout  extends Activity implements OnClickListener  {

  TextView text0;
  TextView text1;
   
  Button btn0;
  Button btn1;
  Button btn2;
  Button btn3;
  EditText edText;
// названия элементов похожи на те, что  и в MainActivity, но это чтоб удобней
// было копипастить, на самом деле они должны соответствовать
// принадлежащему этому активити xml файлу

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.absl);  // ссылка absl.xml

    text0 = (TextView) findViewById(R.id.text0);   
    text1 = (TextView) findViewById(R.id.text1); 

    btn0=(Button) findViewById(R.id.btn0);
      btn0.setOnClickListener(this);
    btn1=(Button) findViewById(R.id.btn1);
      btn1.setOnClickListener(this); 
    btn2=(Button) findViewById(R.id.btn2);
      btn2.setOnClickListener(this);
   btn3=(Button) findViewById(R.id.btn3);
      btn3.setOnClickListener(this);   

   edText=(EditText)findViewById(R.id.edText);
    }

    @Override
    public void onClick(View v) {
        // по id определеяем кнопку, вызвавшую этот обработчик
        switch (v.getId()) {
       
            case R.id.btn0 :
                btn3.setText("AAA" ); 
                AbsoluteLayout.LayoutParams OBJ = new
                             AbsoluteLayout.LayoutParams(70,70,200,400);
              btn3.setLayoutParams(OBJ);
            // AbsoluteLayout.LayoutParams(width,height,X-position,Y-position)
            //3 кнопке присваиваются размеры 70 на 70
          // устанавливается в позицию 200 400 и называют ААА
             break;       
            case R.id.btn1 :
                btn3.setText("OOO" ); 
                AbsoluteLayout.LayoutParams OBJi = new
                       AbsoluteLayout.LayoutParams(70,70,100,300);
                  btn3.setLayoutParams(OBJi); 
            break;           
 
        }//switch

    }//click   
 
}//all

здесь демонстрируется перемещение кнопок

vikt144

Сообщения : 128
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор vikt144 Чт Фев 20, 2020 12:08 pm

Теперь уберем виртуальную клавиатуру, которая всплывает,
когда устройство переключается на экран, содержащий
элемент EditText
  Для этого добавим в заголовок xml файла две строчки

Код:
          android:focusable="true"
          android:focusableInTouchMode="true"
Получаем

<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
    android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:focusable="true"
        android:focusableInTouchMode="true"
 >

 и

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:focusable="true"
    android:focusableInTouchMode="true"   
    >
 Это убирает фокус с элемента EditText

vikt144

Сообщения : 128
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор vikt144 Чт Фев 20, 2020 12:29 pm

Продолжаем добавлять плюшки - передаем параметры в активность
и получаем результат из активности.

Создаем файл txtfield.xml

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

      <TextView
          android:id="@+id/text0"
          android:text="nomesssge"

          android:layout_width="wrap_content"
          android:layout_height="wrap_content">
      </TextView>
     
     <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
 
        android:orientation="horizontal">
   


                <Button
                    android:id="@+id/btn0"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="empty">
                </Button>

                <Button
                    android:id="@+id/btn1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="empty">
                </Button>

               <Button
                    android:id="@+id/btn2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="return">
 
                </Button> 
       
     </LinearLayout>

 
            <EditText
            android:id="@+id/edText"
            android:layout_width="wrap_content"
            android:layout_height="70dp"
            android:hint="введите текст сюда"
            android:layout_gravity="left"           
        > </EditText>   
</LinearLayout>     

тут
    android:focusable="true"
    android:focusableInTouchMode="true"  
не вставляем, (см предыдущеесообщение), так как наоборот заинтересованы, что бы сразу
редактировать текст.

Так же ввели подсказку в EditText
Код:
           android:hint="введите текст сюда"
которая будет выделять текст сереньким
и
Код:
            android:layout_gravity="left"
что бы редактируемый текст появлялся слева, иначе вводимый текст
будет раздвигаться из середины.

Больше информации о TextEdit , а так же как обрабатывать кнопки виртуальной клавиатуры

http://developer.alexanderklimov.ru/android/views/edittext.php


В манифест внесем информацию о новом activity .
        <activity
        android:name=".TextFieldTest">
    </activity>
Можно еще сразу занести в новое активити информацию о ориенации экрана
       <activity
       android:name=".TextFieldTest">
       android:screenOrientation="portrait"
   </activity>
или
android:screenOrientation="landscape"

vikt144

Сообщения : 128
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор vikt144 Сб Фев 22, 2020 2:16 am

В main xml поменяем названия двум кнопкам
Код:
               <Button
                    android:id="@+id/btn1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="TxtFieldTest">
                </Button>

и
Код:
              <Button
                    android:id="@+id/btn2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="TxtEditTst">
 
                </Button>


В MainActivity в метод onClick добавим обработчики этих кнопок

    @Override
    public void onClick(View v) {
        // по id определеяем кнопку, вызвавшую этот обработчик
        switch (v.getId()) {
      
            case R.id.btn0 :
                         Intent intent = new Intent(this, abslayout.class);
                          startActivity(intent);
                // тут  abslayout.class, имя вызываемого класса, соответствующий
              // abslayout.java
           break;      
          
       case R.id.btn1 :
       Intent intent1 = new Intent(this, TextFieldTest.class);
           intent1.putExtra("param0", "создать новый текст");
           startActivityForResult(intent1, 1);
         break;   
 
       case R.id.btn2 :
       Intent intent2 = new Intent(this, TextFieldTest.class);
           intent2.putExtra("param0", "отредактировать существующий текст");
           intent2.putExtra("param1", edText.getText().toString());      
           startActivityForResult(intent2, 1);
         break;     
 
        }//switch

    }//click  
Здесь
 Intent intent1 = new Intent(this, TextFieldTest.class); // создается новый интент
                                                                             // который указывает на
                                                             // TextFieldTest.class, который еще не создали

intent1.putExtra("param0", "создать новый текст");
      // Через параметр "param0" передается  текст.
    // в TextFieldTest.java его можно прочесть примерно так


Код:
    Intent intent = getIntent();
    String par0 = intent.getStringExtra("param0");


           startActivityForResult(intent1, 1);
  // по возвращению из активити результат будет обработан асинхронно
//методом
  onActivityResult(int requestCode, int resultCode, Intent data)
и 1 в переданном параметре вернется в int requestCode,
это нужно, что бы метод onActivityResult мог различать различные
вызовы startActivityForResult

Кнопка btn2 работает также, только передает еще один параметр,
который забирает из  EditText'а  " edText.getText().toString()); "

и наконец ассинхронно вызываемая
 
  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (data == null) {return;}
    String ed = data.getStringExtra("edits");
   edText.setText(ed);  возвращает параметр в EditText
  }
int requestCode // параметр, переданный при вызове   startActivityForResult
int resultCode   // разработчик использует этот параметр как хочет
     // обычно  используют константы RESULT_CANCELED  или RESULT_OK
data.getStringExtra("edits"); //в TextFieldTest.java должен быть код
Код:
intent.putExtra("edits", " некий  текст" );


подробнее
https://startandroid.ru/ru/uroki/vse-uroki-spiskom/68-urok-29-vyzyvaem-activity-i-poluchaem-rezultat-metod-startactivityforresult.html
https://startandroid.ru/ru/uroki/vse-uroki-spiskom/67-urok-28-extras-peredaem-dannye-s-pomoschju-intent.html
https://startandroid.ru/ru/uroki/vse-uroki-spiskom/69-urok-30-podrobnee-pro-onactivityresult-zachem-nuzhny-requestcode-i-resultcode.html

Код MainActivity
https://pastebin.com/dt82VGdT


Последний раз редактировалось: vikt144 (Сб Фев 22, 2020 2:49 am), всего редактировалось 1 раз(а)

vikt144

Сообщения : 128
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор vikt144 Сб Фев 22, 2020 2:42 am

Наконец текст TextFieldTest.java

package com.examp.abs;

import android.app.*;
import android.os.*;
import android.os.Bundle;
import android.os.Environment;
import android.util.*;

import android.content.pm.ActivityInfo; //  тут нужен для ориентации экрана
import android.content.Intent;
import android.content.Context;

import android.app.Activity;

 
import android.view.KeyEvent.Callback ;

import android.view.*;  //KeyEvent SurfaceHolder; SurfaceView;

import android.view.View;
import android.view.View.*;  //OnClickListener

import android.widget.*;  

import java.util.*;
import java.util.List;

public class TextFieldTest  extends Activity implements OnClickListener  {

  TextView text0;
//  TextView text1;
   
  Button btn0;
  Button btn1;
  Button btn2;
//  Button btn3;

  EditText edText;
 
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.txtfield);

    text0 = (TextView) findViewById(R.id.text0);   
 
    btn0=(Button) findViewById(R.id.btn0);
      btn0.setOnClickListener(this);
    btn1=(Button) findViewById(R.id.btn1);
      btn1.setOnClickListener(this); 
    btn2=(Button) findViewById(R.id.btn2);
      btn2.setOnClickListener(this);

   edText=(EditText)findViewById(R.id.edText);

    Intent intent = getIntent();
    String par0 = intent.getStringExtra("param0");
    String par1 = intent.getStringExtra("param1");

    text0.setText(par0);
    edText.setText(par1);  
   }
  
        @Override
    public void onClick(View v) {
        // по id определеяем кнопку, вызвавшую этот обработчик
        switch (v.getId()) {
       
            case R.id.btn0 :
                text0.setText("ON " ); 
 
            break;       
            case R.id.btn1 :
                text0.setText("OFF " ); 
 
            break;           
            case R.id.btn2 :
                          Intent intent = new Intent();
                          intent.putExtra("edits", edText.getText().toString());
                          setResult(RESULT_OK, intent);
                          finish();
 
     }
   } 
    
}//all    

 Результат возвращается при обработке кнопки btn2
intent.putExtra("edits", edText.getText().toString());

процедура finish() закрывает окно и возвращает значения,
которые будут обработаны в
onActivityResult 
Если это окно закрыть друким способом, нажав клавищу
back например, то окно ничего не возвратит
Если нужно этого избежать, то на клавишу back надо
повесить обработчик , что то вроде

import android.view.KeyEvent.Callback 
--------
       @Override
        public void onBackPressed() {
                         Intent intent = new Intent();
                          intent.putExtra("edits", edText.getText().toString());
                          setResult(RESULT_OK, intent);
                          finish();      
   ,       super.onBackPressed();
          }
но это надо еще протестировать.
Еще, параметры, передаваемые таким способом, надо вероятно
тестировать на null, на всякий случай.

В общем, параметры, это очень полезная штука в android программировании,
очень повысит функциональность скриптов.

vikt144

Сообщения : 128
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор Gudleifr Сб Фев 22, 2020 9:08 am

Поздравляю! На кошачьем форуме заметили. Срочно реанимируют старую тему про FORTH на КПК...
Gudleifr
Gudleifr
Admin

Сообщения : 3244
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор vikt144 Вс Фев 23, 2020 12:19 am

Спасибо! Но скорее идея просто витает в воздухе, не меньше, чем 15 лет.

vikt144

Сообщения : 128
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор vikt144 Вт Фев 25, 2020 12:15 am

Теперь хранение данных.
Чтение и запись файлов - делается все как в ява.
На всякий случай
https://startandroid.ru/ru/uroki/vse-uroki-spiskom/138-urok-75-hranenie-dannyh-rabota-s-fajlami.html


Есть проблемы с записью данных на sd карту на android версий от 4.4
и кажется меньше 7.  Это маразматики из гугола якобы в целях безопасности
что-то наворотили. Для обхода проблемы смотрите статью
https://2keep.net/android-4-4-problems-writing-to-microsd/
 Еще в андроид api есть sql база данных.
Так же есть простое в использовании Preferences.
Значения сохраняются в виде пары: имя, значение.
Как это работает, описано здесь.
 https://startandroid.ru/ru/uroki/vse-uroki-spiskom/73-urok-33-hranenie-dannyh-preferences.html
Отредактирую готовые функции оттуда.
Код:

import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;

Сохранить значение
Код:
void savePref(String key, String value) {
    SharedPreferences sPref = getPreferences(MODE_PRIVATE);
    Editor ed = sPref.edit();
    ed.putString(key , value);
    ed.commit();
  }

Прочитать значение

Код:
 String loadPref(String key, String defvalue) {
    SharedPreferences sPref = getPreferences(MODE_PRIVATE);
    return sPref.getString(key , defvalue );
 }

тут  defvalue - строка по  умолчанию, которая вернется, если
значения с ключем key  не окажется.
Более подробный обзор  Preferences
http://developer.alexanderklimov.ru/android/theory/sharedpreferences.php

  Теперь напишем пример использования  Preferences
 Попробуем переключится на другой экран во время старта программы.
Если значение параметра screen в Preferences == "main",  загружается
главный экран, иначе - экран absolute.
Для этого в MainActivity добавим две ф-ции, ранее описанных.

Затем, в onCreate добавим код

   String screenloader = loadPref( "screen", "" );
   if (  screenloader.equals("") ) {          // если  поле screen не создано
            text0.setText("not init");           
            btn3.setText("set_abs");         // кнопке btn3 присваиваем текст "set_abs"
          savePref( "screen", "main" );  // присваиваем полю screen значение main
         } else
              if (  screenloader.equals("absolute") ) { // если "absolute"
                 btn3.setText("set_main");                   //  кнопке btn3 присваиваем текст  "set_main"
                 Intent intent = new Intent(this, abslayout.class); 
                     startActivity(intent);    // запускаем другое окно
                 }
             else btn3.setText("set_abs");  // иначе присваиваем btn3 текст  "set_abs"
}


в onClick добавим обработчик кнопки btn3

       case R.id.btn3 :
           if ( loadPref( "screen", "main" ).equals("main") ) {
         savePref("screen", "absolute");
         btn3.setText("set_main");
        } else
          {    savePref("screen", "main");
            btn3.setText("set_abs");
        }
         break;   



тут просто меняет значение в Preferenses и  текст кнопки на противоположное.

текст программы
https://pastebin.com/PNVCWCvh

 Нажатие кнопки btn3 записывает в Preferences, какой экран будет загружен при
следующем старте программы.
На реальном устройстве работает, но явно мутно.
Наверно  надо выполнять смену экрана в onStart.
О состояниях активити (onStart, onPause итд см
https://startandroid.ru/ru/uroki/vse-uroki-spiskom/60-urok-23-activity-lifecycle-v-kakih-sostojanijah-mozhet-byt-activity.html
)

Тщательнее  буду тестировать это непосредственно на телефоне,
после того, как встрою скриптовый язык.

vikt144

Сообщения : 128
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор vikt144 Вт Фев 25, 2020 12:53 am

Еще немного android api.
Всплывающие сообщения

import android.widget.Toast;
Toast.makeText(this, "Некий текст", Toast.LENGTH_LONG).show();

можно вместо Toast.LENGTH_LONG использовать
Toast.LENGTH_SHORT, тогда время показа будет короче

Закрытие экрана двойным нажатием кнопки back

import android.view.KeyEvent  ;
import android.view.KeyEvent.Callback ;


      int back_pressed
       @Override
       public void onBackPressed() {
    if (back_pressed + 2000 > System.currentTimeMillis())
super.onBackPressed();
    else
        back_pressed = System.currentTimeMillis();
                Toast.makeText(this, "Press again to exit",
                Toast.LENGTH_SHORT).show();                
 }


больше по экранной клавиатуре и прочем здесь
http://developer.alexanderklimov.ru/android/keyboard.php


Последний раз редактировалось: vikt144 (Вт Фев 25, 2020 1:18 am), всего редактировалось 1 раз(а)

vikt144

Сообщения : 128
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор vikt144 Вт Фев 25, 2020 1:02 am

Добавлю еще работу со звуками, принципы работы с датчиками устройства
(гироскопы, датчик приближения итп ), и естественно геолокацией.
Если дойдут руки, возможно еще и фото/видео.
После, внедрение скриптового языка во все это хозяйство.
Затем графика и навигационная программа.

vikt144

Сообщения : 128
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор vikt144 Ср Мар 04, 2020 1:11 am

Более тонкое управление кнопками - регистрация нажатия и отпускания кнопки.

Создадим новый проект less2

В main.xml скопируем текст из поста
https://gudleifr.forum2x2.ru/t92p25-topic#1427
только уберем EditText - тут он не нужен.
Работать будем с кнопкой btn4: короткое нажатие - текст кнопки изменится
на название следующей настройки, длинное - загрузится окно
редактирования этой настройки. После, отредактированный текст настройки
загрузится в preferences.

В main активити загрузим текст


package com.devises; // замените на свой

import android.app.*;
import android.os.*;
import android.os.Bundle;
import android.os.Environment;
import android.util.*;
//добавленные api
import android.content.pm.ActivityInfo; //  тут нужен для ориентации экрана
import android.content.Intent;
import android.content.Context;

import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;

import android.app.Activity;


import android.view.KeyEvent.Callback ;

import android.view.*;  //KeyEvent SurfaceHolder; SurfaceView;

import android.view.View;
import android.view.View.*;  //OnClickListener

import android.widget.*;  

import java.util.*;
import java.util.List;


public class MainActivity extends Activity implements OnClickListener , OnTouchListener{
// добавлен OnTouchListener
 TextView text0;
 TextView text1;
 
 Button btn0;
 Button btn1;
 Button btn2;
 Button btn3;
 Button btn4;
 
   @Override
   protected void onCreate(Bundle savedInstanceState)
   {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);

   text0 = (TextView) findViewById(R.id.text0);  
   text1 = (TextView) findViewById(R.id.text1);

   btn0=(Button) findViewById(R.id.btn0);
     btn0.setOnClickListener(this);
   btn1=(Button) findViewById(R.id.btn1);
     btn1.setOnClickListener(this);
   btn2=(Button) findViewById(R.id.btn2);
     btn2.setOnClickListener(this);
  btn3=(Button) findViewById(R.id.btn3);
     btn3.setOnClickListener(this);  
  btn4=(Button) findViewById(R.id.btn4);

//      btn4.setOnClickListener(this);  
    btn4.setOnTouchListener(this);
// btn4 теперь обрабатывает setOnTouchListener
   }// onCreate


   long lastKeyPressed=0;  // время, когда была нажата кнопка
   int keyPointer=0;         //  указатель в массиве настроек
   String[] buttonString = {"sndDir" , "other" };
// массив настроек - первые две не используются,

   @Override
   public void onClick(View v) {  //Обычная обработка кнопки
       // по id определеяем кнопку, вызвавшую этот обработчик
       switch (v.getId()) {
     
           case R.id.btn0 :
                 //       заготовка ничего не делает

  break;
           case R.id.btn1 :
      ////////
          break;            
       }//switch
  }

       @Override  // тонкая обработка кнопок, присвоен кнопке btn4
public boolean onTouch(View v, MotionEvent event) {

if (event.getAction() == MotionEvent.ACTION_DOWN) { //при нажатии
                        lastKeyPressed=System.currentTimeMillis();
   }
if (event.getAction() == MotionEvent.ACTION_UP) { // при отпускании
         if ( ( lastKeyPressed+1500) >  //если меньше полторы секунды    
                                   System.currentTimeMillis() ) {    
                             if ( keyPointer == buttonString.length -1)
                                keyPointer=0;
                                 else keyPointer++;
                                btn4.setText("edit " + buttonString[keyPointer] );
}    
               else { // иначе загрузка нужной настройки
                                 // и редактирование
           text1.setText("edit " + buttonString[keyPointer]);
           String prf = loadPref(buttonString[keyPointer],"");
                           Intent intent = new Intent(this, simpleTextEdit.class);
                           intent.putExtra("param0", "edit " + buttonString[keyPointer] );
                           intent.putExtra("param1", prf);
            startActivityForResult(intent, 3); // см ранее
                          }            
}
       return false;        
       }//onTouch

 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   if (data == null) {return;}
   switch (requestCode) {
      case 3 : // этот код "3"  был передан в процессе вызова
                  // "startActivityForResult(intent, 3);"
        String ed = data.getStringExtra("edits");
savePref(buttonString[keyPointer], ed );
       break;
  } //switch
 }

////////////////////////////////////////////////////utils/////////////////////////

//import android.content.SharedPreferences;
//import android.content.SharedPreferences.Editor;
void savePref(String key, String value) {
     SharedPreferences sPref = getPreferences(MODE_PRIVATE);
     Editor ed = sPref.edit();
     ed.putString(key , value);
     ed.commit();
 }
 String loadPref(String key, String defvalue) {
     SharedPreferences sPref = getPreferences(MODE_PRIVATE);
     return sPref.getString(key , defvalue );
 }  
/////////////////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\
}//all      

vikt144

Сообщения : 128
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор vikt144 Ср Мар 04, 2020 2:03 am

Добавим к файлу main.xml файл txtfield.xml c содержимым, как в
https://gudleifr.forum2x2.ru/t92p25-topic#1437

В AndroidManifest.xml добавим активность
Код:
       <activity
    android:name=".simpleTextEdit">
 </activity>

Создадим файл simpleTextEdit.java


package com.devises;

import android.app.*;
import android.os.*;
import android.os.Bundle;
import android.os.Environment;
import android.util.*;

import android.content.pm.ActivityInfo; //  тут нужен для ориентации экрана
import android.content.Intent;
import android.content.Context;

import android.app.Activity;


import android.view.KeyEvent.Callback ;

import android.view.*;  //KeyEvent SurfaceHolder; SurfaceView;

import android.view.View;
import android.view.View.*;  //OnClickListener

import android.widget.*;  

import java.util.*;
import java.util.List;

public class simpleTextEdit  extends Activity implements OnClickListener  {

 TextView text0;
//  TextView text1;
   
 Button btn0;
 Button btn1;
 Button btn2;
//  Button btn3;

 EditText edText;
 
   @Override
   protected void onCreate(Bundle savedInstanceState)
   {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.txtfield);

   text0 = (TextView) findViewById(R.id.text0);    

   btn0=(Button) findViewById(R.id.btn0);
     btn0.setOnClickListener(this);
   btn1=(Button) findViewById(R.id.btn1);
     btn1.setOnClickListener(this);  
   btn2=(Button) findViewById(R.id.btn2);
     btn2.setOnClickListener(this);

  edText=(EditText)findViewById(R.id.edText);

   Intent intent = getIntent();
   String par0 = intent.getStringExtra("param0");
   String par1 = intent.getStringExtra("param1");
                            text0.setText(par0);  
                           edText.setText(par1);  
  }
 
    @Override
public void onClick(View v) {
// по id определеяем кнопку, вызвавшую этот обработчик
switch (v.getId()) {

case R.id.btn0 :
  ///////

break;
case R.id.btn1 :
/////

break;
case R.id.btn2 :
                         Intent intent = new Intent();
                         intent.putExtra("edits", edText.getText().toString());
                         setResult(RESULT_OK, intent);
                         finish();

    }
  }  
   
}//all    


Это простенький редактор, может использоваться для редактирования
текстовых полей. Можно развесить плюшками, в будущем в него можно
будет прокинуть скрипт через параметры.

vikt144

Сообщения : 128
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор vikt144 Чт Мар 05, 2020 2:21 am

Озвучивание проекта.

Почитать можно тут.
http://www.mobilab.ru/androiddev/androidsoundpoolmediaplayer.html

и
тут
https://startandroid.ru/ru/uroki/vse-uroki-spiskom/239-urok-127-media-soundpool.html
отсюда выкачаем пару звуковых файлов.
http://yadi.sk/d/3KpXK2qD55QCh
http://yadi.sk/d/-_UUl8L555QCN


Кстати, поиск звуков в интернете оказался довольно сложным делом.
Слишком длинные они в основном.
Возможно поможет эта статья.
https://habr.com/ru/company/audiomania/blog/471550/

   В ранее приведенных примерах, звук инициировался и исполнялся в
одном окне.
 Хотелось бы, что бы soundpool размещался в одном месте,
а все activity(экраны) обращались бы к нему.
Но повидимому, с activity нельзя обращаться как с обычным java
классом, и передавать soundpool как объект.
Создавать к каждому activity свой soundpool видимо тоже
не хорошая идея, на моем htc это работало видимо глюкаво.
Видимо, надо реализовывать сервисы
https://startandroid.ru/ru/uroki/vse-uroki-spiskom/157-urok-92-service-prostoj-primer.html
 Но это отложим на потом, иначе никогда не доберемся до скриптов.
 Озвучим предыдущий пример: выбор настройки - один звук, переход
к настройке - другой.

vikt144

Сообщения : 128
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор vikt144 Чт Мар 05, 2020 3:07 am

Создадим в каталоге main/res/ каталог raw и туда скопируем выкачанные
файлы   explosion.ogg  и  shot.ogg.

  Затем в каталоге, где находятся java файлы, создадим каталог
multimediad.

Создадим файл soundplay.java со следущим содержимым

package com.devises.multimediad;

import android.app.*;
 
import android.content.Context;

import android.media.AudioManager;
import android.media.SoundPool;
import android.media.SoundPool.OnLoadCompleteListener;

import java.lang.*;


public class soundplay {
  ///sounds
  private SoundPool soundPool;
 
  boolean loaded=false;
  int num=0;
/////////////
 
//Создаем soundPool.
public void createSoundPool( int qu , int sr ) {
     soundPool=new SoundPool(10, AudioManager.STREAM_MUSIC,0);
 
//устанавливаем call-back функцию, которая вызывается по
//завершению загрузки файла в память
    soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener(){
      @Override
      public void onLoadComplete(SoundPool soundPool, int sampleId, int status){
      loaded=true;
    }
  });
}
 
//Загружаем звуки в память
 
 public int soundPoolLoad(Context con , int resId ) {
   return soundPool.load(con ,  resId, 1 ); 
 }
 
/*  параметры play
 ID файла. Тот самый, который мы получили от метода load.
- громкость левого канала (от 0.0 до 1.0)
- громкость правого канала (от 0.0 до 1.0)
- приоритет. Этот приоритет уже не декоративный, а вполне себе используемый. Далее увидим, где он нужен.
- количество повторов. Т.е. файл будет воспроизведен один раз точно + то количество раз, которое вы здесь укажете
- скорость воспроизведения. Можно задать от половины нормальной скорости до двойной (0.5 - 2).

Метод play возвращает ID потока, используемого для проигрывания файла. Этот ID можно использовать для дальнейшего
 изменения настроек в процессе проигрывания файла, а также для паузы.
*/

 
   public void pla(int soundId) {
      soundPool.play(soundId,1,1,1,0,1f);//volume,volume, 1,0, 1f); // 1.0f, 1.0f, 1, 0, 1);
   }
 
  public void bgPlay(int soundId) {  // проигрывание звуков в фоновом потоке
     final int snd = soundId;
     Thread t = new Thread(new Runnable() {
        public void run() {
              pla(snd);
          }
       
      });
      t.start();
  }//void
} //all



 Так как работу со звуком планируется вынести в сервис,
тут используется самая примитивная реализация, просто,
что бы протестировать.

 В MainActivity добавляем

import com.devises.multimediad.*;
( com.devices замените на ваши пути) 

soundplay SP = new soundplay();  ////////////////////snd/////////////
int vo0,vo1;


В onCreate добавим

   SP.createSoundPool( 10 , 0 ) ; // 10 проигр зв одновременно
   vo0 = SP.soundPoolLoad( this , R.raw.shot); 
   vo1 = SP.soundPoolLoad( this , R.raw.explosion);



в onTouch добавим SP.bgPlay(vo0) // проиграть звук в фоне
и  SP.bgPlay(vo1)

получим

        @Override
    public boolean onTouch(View v, MotionEvent event) {
       
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
                                lastKeyPressed=System.currentTimeMillis();
            }
        if (event.getAction() == MotionEvent.ACTION_UP) {
                  if ( ( lastKeyPressed+2000) > System.currentTimeMillis() ) {   
                                      if ( keyPointer == buttonString.length -1)
                                         keyPointer=0;
                                          else keyPointer++;
                                 btn4.setText("edit " + buttonString[keyPointer] );
                         SP.bgPlay(vo0); // SP.pla(vo0);
                }              
                    else {
                    text1.setText("edit " + buttonString[keyPointer]);
                    String prf = loadPref(buttonString[keyPointer],"");
                            Intent intent = new Intent(this, simpleTextEdit.class);
                            intent.putExtra("param0", "edit " + buttonString[keyPointer] );
                            intent.putExtra("param1", prf);
                SP.bgPlay(vo1); // SP.pla(vo1);      
                     startActivityForResult(intent, 3);
                           }                    
        }
        return false;       
        }//onTouch



 можно протестировать проигрывание звуков в фоновом  потоке,
SP.bgPlay(vo1), затем заменить на  (SP.pla(vo1)   )


перекомпилировать и проиграть звук в основном потоке.

vikt144

Сообщения : 128
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор vikt144 Сб Апр 18, 2020 12:02 am

Внезапная заминка. 
Среда AIDE, которое на мой взгляд лучшее SDK для андроид, в бесплатной
версии, отказывается компилировать проект, состоящий больше, чем из пяти java файлов.
  К счастью, в андроид API есть возможность вызывать интенты и сервисы
из других программ, так что не коммерческую программу можно разбить
на несколько небольших программ, а для коммерческих проектов можно
и раскошелится примерно на 1000 рублей на закупку aide.

  Оно вполне стоит, чтобы не связываться с дикостью гугол,
которое например снесло  32 битную версию android studio.
  Мне теперь что, линукс переустанавливать? А потом что им взбредет в голову?

vikt144

Сообщения : 128
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Страница 2 из 2 Предыдущий  1, 2

Вернуться к началу

- Похожие темы

 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения