Recent

Author Topic: Android Module Wizard  (Read 708154 times)

m4u_hoahoctro

  • Full Member
  • ***
  • Posts: 160
Re: Android Module Wizard
« Reply #420 on: May 16, 2015, 06:13:09 am »
jmpessoa: my problem hasn't been solved :(

greenzyzyzy

  • Full Member
  • ***
  • Posts: 249
Re: Android Module Wizard
« Reply #421 on: May 16, 2015, 06:14:58 am »
@greenzyzyzy,

You need know/discovery what is the path to your device sdcard ...  just "/sdcard" can not work for all devices .... in java: Environment.getExternalStorageDirectory()

just procedure media_create() can not run pass.



Code: [Select]
procedure media_create();
begin
 jmediaplayer_class:=javaEnvRef^^.FindClass(javaEnvRef,'android/media/MediaPlayer');

 create_id:= javaEnvRef^^.GetMethodID(javaEnvRef, jmediaplayer_class, '<init>', '()V');
 setdatasource_id:= javaEnvRef^^.GetMethodID(javaEnvRef, jmediaplayer_class, 'SetDataSource', '(Ljava/lang/String;)V');
 prepare_id:= javaEnvRef^^.GetMethodID(javaEnvRef, jmediaplayer_class, 'Prepare', '()V');
 start_id:= javaEnvRef^^.GetMethodID(javaEnvRef, jmediaplayer_class, 'Start', '()V');
 release_id:= javaEnvRef^^.GetMethodID(javaEnvRef, jmediaplayer_class, 'Release', '()V');

 jmediaplayer_jobject:=javaEnvRef^^.NewObject(javaEnvRef,jmediaplayer_class,create_id);

end;


these codes can not run,but i don't know where is wrong?

jmpessoa

  • Hero Member
  • *****
  • Posts: 2301
Re: Android Module Wizard
« Reply #422 on: May 16, 2015, 06:59:44 am »
@m4u_hoahoctro

1. Well, when you update your Lamw some code can not work....
because some component property was lost but:
no panic! When prompt "Read error" [Unknown Property] just choice "Continue Loading"

2. At the moment Lamw Author "A.S." is doing a hard [and nice] work to improve form designer, so old project can have some layout impact [but just in design time!]

3. If you problem is just with jTextView17/jTextView18 , you can try:

jTextView17
Anchor = jTextView13

jTextView18
Anchor = jTextView17
PosRelativeToAnchor = [raToRightOf,raAlignBaseline]

@greenzyzyzy,
In fact, with this pure [and hard!] JNI approach to access java objects the things get very very complicated to Pascal [and Lazarus] ... 
« Last Edit: May 16, 2015, 07:16:20 am by jmpessoa »
Lamw: Lazarus Android Module Wizard
https://github.com/jmpessoa/lazandroidmodulewizard

m4u_hoahoctro

  • Full Member
  • ***
  • Posts: 160
Re: Android Module Wizard
« Reply #423 on: May 16, 2015, 07:13:16 am »
@jmpessoa,

Now I am having a trouble with jtextview and jimage, some jtextviews and jimages are dissappeared when I run apk file. I try to fix many times but it doesn't change :-\

Download my project, build and run it, you will see jtextviews (7,8,11,12,15,16) don't appear ( form2), and jimage (form3) doesn't show its image, althought I choosed layout for them and type Image index correctly  %)

My friend said this is a bug, Is he true ?

https://app.box.com/s/90qwkwfk117acz5cks99vsvnyd1ubghg

greenzyzyzy

  • Full Member
  • ***
  • Posts: 249
Re: Android Module Wizard
« Reply #424 on: May 16, 2015, 07:25:58 am »
@m4u_hoahoctro

1. Well, when you update your Lamw some code can not work....
because some component property was lost but:
no panic! When prompt "Read error" [Unknown Property] just choice "Continue Loading"

2. At the moment Lamw Author "A.S." is doing a hard [and nice] work to improve form designer, so old project can have some layout impact [but just in design time!]

3. If you problem is just with jTextView17/jTextView18 , you can try:

jTextView17
Anchor = jTextView13

jTextView18
Anchor = jTextView17
PosRelativeToAnchor = [raToRightOf,raAlignBaseline]

@greenzyzyzy,
In fact, with this pure [and hard!] JNI approach to access java objects the things get very very complicated to Pascal [and Lazarus] ...


no idea to solve my code?would you like to help me to have a test with my codes?

Code: [Select]
unit mediaplayer;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils,jni,customdrawnint;
var
  jmediaplayer_class:jclass;
  jmediaplayer_jobject:jobject;
  create_id:jmethodid;
  setdatasource_id:jmethodid;
  prepare_id:jmethodid;
  start_id:jmethodid;
  release_id:jmethodid;
procedure media_create();
procedure SetDataSource(path: string);
procedure Prepare();
procedure Start();
procedure Release();


implementation
procedure media_create();
begin
 jmediaplayer_class:=javaEnvRef^^.FindClass(javaEnvRef,'android/media/MediaPlayer');

 create_id:= javaEnvRef^^.GetMethodID(javaEnvRef, jmediaplayer_class, '<init>', '()V');
 setdatasource_id:= javaEnvRef^^.GetMethodID(javaEnvRef, jmediaplayer_class, 'SetDataSource', '(Ljava/lang/String;)V');
 prepare_id:= javaEnvRef^^.GetMethodID(javaEnvRef, jmediaplayer_class, 'Prepare', '()V');
 start_id:= javaEnvRef^^.GetMethodID(javaEnvRef, jmediaplayer_class, 'Start', '()V');
 release_id:= javaEnvRef^^.GetMethodID(javaEnvRef, jmediaplayer_class, 'Release', '()V');

 jmediaplayer_jobject:=javaEnvRef^^.NewObject(javaEnvRef,jmediaplayer_class,create_id);

end;


procedure SetDataSource(path: string);
var
  lParams: array[0..0] of jValue;
begin
 lParams[0].l := javaEnvRef^^.NewStringUTF(javaEnvRef, PChar(path));
 javaEnvRef^^.CallVoidMethodA(javaEnvRef, jmediaplayer_jobject,setdatasource_id, @lParams[0]);
 javaEnvRef^^.DeleteLocalRef(javaEnvRef, lParams[0].l);

end;

procedure Prepare();
begin
 javaEnvRef^^.CallVoidMethod(javaEnvRef, jmediaplayer_jobject,prepare_id);
end;

procedure Start();
begin
 javaEnvRef^^.CallVoidMethod(javaEnvRef, jmediaplayer_jobject,start_id);
end;

procedure Release();
begin
 javaEnvRef^^.CallVoidMethod(javaEnvRef, jmediaplayer_jobject,release_id);
end;

end.


jmpessoa

  • Hero Member
  • *****
  • Posts: 2301
Re: Android Module Wizard
« Reply #425 on: May 16, 2015, 07:35:50 am »
@m4u_hoahoctro

Quote
1.jpg
image2,jpg
3.jpg
4.jpg
5.jpg

You can see  "image2,jpg" ..... fix it!

@greenzyzyzy
Quote
...would you like to help me to have a test with my codes?

Sorry... I can not seem!

but you can:

change "SetDataSource" to "setDataSource"
Prepare to "prepare" 
Start to "start"  etc....

Good Luck!
« Last Edit: May 16, 2015, 07:42:14 am by jmpessoa »
Lamw: Lazarus Android Module Wizard
https://github.com/jmpessoa/lazandroidmodulewizard

greenzyzyzy

  • Full Member
  • ***
  • Posts: 249
Re: Android Module Wizard
« Reply #426 on: May 16, 2015, 09:43:23 am »
@m4u_hoahoctro

Quote
1.jpg
image2,jpg
3.jpg
4.jpg
5.jpg

You can see  "image2,jpg" ..... fix it!

@greenzyzyzy
Quote
...would you like to help me to have a test with my codes?

Sorry... I can not seem!

but you can:

change "SetDataSource" to "setDataSource"
Prepare to "prepare" 
Start to "start"  etc....

Good Luck!


thank you for reply,media_create( ) procedure run pass.
but next procedure still can not run.

Code: [Select]
procedure SetDataSource(path: string);
var
  lParams: array[0..0] of jValue;
begin
 lParams[0].l := javaEnvRef^^.NewStringUTF(javaEnvRef, PChar(path));
 javaEnvRef^^.CallVoidMethodA(javaEnvRef, jmediaplayer_jobject,setdatasource_id, @lParams[0]);
 javaEnvRef^^.DeleteLocalRef(javaEnvRef, lParams[0].l);

end;

procedure Prepare();
begin
 javaEnvRef^^.CallVoidMethod(javaEnvRef, jmediaplayer_jobject,prepare_id);
end;

procedure Start();
begin
 javaEnvRef^^.CallVoidMethod(javaEnvRef, jmediaplayer_jobject,start_id);
end;

procedure Release();
begin
 javaEnvRef^^.CallVoidMethod(javaEnvRef, jmediaplayer_jobject,release_id);
end;

end.

run these codes still halt.

greenzyzyzy

  • Full Member
  • ***
  • Posts: 249
Re: Android Module Wizard
« Reply #427 on: May 16, 2015, 10:08:25 am »
@m4u_hoahoctro

Quote
1.jpg
image2,jpg
3.jpg
4.jpg
5.jpg

You can see  "image2,jpg" ..... fix it!

@greenzyzyzy
Quote
...would you like to help me to have a test with my codes?

Sorry... I can not seem!

but you can:

change "SetDataSource" to "setDataSource"
Prepare to "prepare" 
Start to "start"  etc....

Good Luck!






change "SetDataSource" to "setDataSource"
Prepare to "prepare" 
Start to "start"  etc....

Good Luck!

if i write code like this that will ok:

Code: [Select]
procedure test();
var
  jmediaplayer_class:jclass;
  jmediaplayer_jobject:jobject;
  create_id:jmethodid;
  setdatasource_id:jmethodid;
  prepare_id:jmethodid;
  start_id:jmethodid;
  release_id:jmethodid;
  lParams: array[0..0] of jValue;
begin
  jmediaplayer_class:=javaEnvRef^^.FindClass(javaEnvRef,'android/media/MediaPlayer');

 create_id:= javaEnvRef^^.GetMethodID(javaEnvRef, jmediaplayer_class, '<init>', '()V');
 setdatasource_id:= javaEnvRef^^.GetMethodID(javaEnvRef, jmediaplayer_class, 'setDataSource', '(Ljava/lang/String;)V');
 prepare_id:= javaEnvRef^^.GetMethodID(javaEnvRef, jmediaplayer_class, 'prepare', '()V');
 start_id:= javaEnvRef^^.GetMethodID(javaEnvRef, jmediaplayer_class, 'start', '()V');
 release_id:= javaEnvRef^^.GetMethodID(javaEnvRef, jmediaplayer_class, 'release', '()V');

 jmediaplayer_jobject:=javaEnvRef^^.NewObject(javaEnvRef,jmediaplayer_class,create_id);


 //lParams[0].l := javaEnvRef^^.NewStringUTF(javaEnvRef, PChar('/sdcard/mybmp/alert.mp3'));
 lParams[0].l := javaEnvRef^^.NewStringUTF(javaEnvRef, PChar('/storage/sdcard0/mybmp/alert.mp3'));
 javaEnvRef^^.CallVoidMethodA(javaEnvRef, jmediaplayer_jobject,setdatasource_id, @lParams[0]);
 javaEnvRef^^.DeleteLocalRef(javaEnvRef, lParams[0].l);

 javaEnvRef^^.CallVoidMethod(javaEnvRef, jmediaplayer_jobject,prepare_id);

 javaEnvRef^^.CallVoidMethod(javaEnvRef, jmediaplayer_jobject,start_id);

 //javaEnvRef^^.CallVoidMethod(javaEnvRef, jmediaplayer_jobject,release_id);
end;


but if like this it will have error.:
Code: [Select]
procedure media_create();
begin
 jmediaplayer_class:=javaEnvRef^^.FindClass(javaEnvRef,'android/media/MediaPlayer');

 create_id:= javaEnvRef^^.GetMethodID(javaEnvRef, jmediaplayer_class, '<init>', '()V');
 setdatasource_id:= javaEnvRef^^.GetMethodID(javaEnvRef, jmediaplayer_class, 'setDataSource', '(Ljava/lang/String;)V');
 prepare_id:= javaEnvRef^^.GetMethodID(javaEnvRef, jmediaplayer_class, 'prepare', '()V');
 start_id:= javaEnvRef^^.GetMethodID(javaEnvRef, jmediaplayer_class, 'start', '()V');
 release_id:= javaEnvRef^^.GetMethodID(javaEnvRef, jmediaplayer_class, 'release', '()V');

 jmediaplayer_jobject:=javaEnvRef^^.NewObject(javaEnvRef,jmediaplayer_class,create_id);

end;


procedure SetDataSource(path: string);
var
  lParams: array[0..0] of jValue;
begin
 lParams[0].l := javaEnvRef^^.NewStringUTF(javaEnvRef, PChar(path));
 javaEnvRef^^.CallVoidMethodA(javaEnvRef, jmediaplayer_jobject,setdatasource_id, @lParams[0]);
 javaEnvRef^^.DeleteLocalRef(javaEnvRef, lParams[0].l);

end;

procedure Prepare();
begin
 javaEnvRef^^.CallVoidMethod(javaEnvRef, jmediaplayer_jobject,prepare_id);
end;

procedure Start();
begin
 javaEnvRef^^.CallVoidMethod(javaEnvRef, jmediaplayer_jobject,start_id);
end;

procedure Release();
begin
 javaEnvRef^^.CallVoidMethod(javaEnvRef, jmediaplayer_jobject,release_id);
end;                       


is that means jni can not use golbal viriants?

jmpessoa

  • Hero Member
  • *****
  • Posts: 2301
Re: Android Module Wizard
« Reply #428 on: May 17, 2015, 07:36:55 am »
Hi All

There is a new Lamw revision:

Version 0.6 - rev. 25 - 14 May 2015

ref. https://github.com/jmpessoa/lazandroidmodulewizard

   NEW! 
      jForm "ShowCustomMessage" method

   NEW!    
      Demo AppCustomShowMessageDemo1 [Eclipse Compatible Project]
               

   NEW!   New Menu entry: added support to configure project demos
      Lazarus IDE --> Tools --> [Lamw] Android Module Wizard --> Change Project [*.lpi] Ndk Path [Demos]

Thank to All!
« Last Edit: May 17, 2015, 07:38:54 am by jmpessoa »
Lamw: Lazarus Android Module Wizard
https://github.com/jmpessoa/lazandroidmodulewizard

greenzyzyzy

  • Full Member
  • ***
  • Posts: 249
Re: Android Module Wizard
« Reply #429 on: May 17, 2015, 01:54:05 pm »
Hi All

There is a new Lamw revision:

Version 0.6 - rev. 25 - 14 May 2015

ref. https://github.com/jmpessoa/lazandroidmodulewizard

   NEW! 
      jForm "ShowCustomMessage" method

   NEW!    
      Demo AppCustomShowMessageDemo1 [Eclipse Compatible Project]
               

   NEW!   New Menu entry: added support to configure project demos
      Lazarus IDE --> Tools --> [Lamw] Android Module Wizard --> Change Project [*.lpi] Ndk Path [Demos]

Thank to All!

does laz4android threads can not support TBitmap?
just use beginthread or tthread class. it seems only support TBitmap some method
juse like loadfromstream,savetostream,loadfromfile,savetofile.
but use TBitmap.canvas or TBitmap.width,TBitmap.height property,application exit immediately.
no idea to use TBitmap in thread perfect?

jmpessoa

  • Hero Member
  • *****
  • Posts: 2301
Re: Android Module Wizard
« Reply #430 on: May 17, 2015, 05:55:48 pm »
@greenzyzyzy,

Please, here on this thread we support

Lamw: Lazarus Android Module Wizard

ref. https://github.com/jmpessoa/lazandroidmodulewizard

I hope your understanding...

Thank you!
Lamw: Lazarus Android Module Wizard
https://github.com/jmpessoa/lazandroidmodulewizard

greenzyzyzy

  • Full Member
  • ***
  • Posts: 249
Re: Android Module Wizard
« Reply #431 on: May 18, 2015, 05:05:36 am »
@greenzyzyzy,

Please, here on this thread we support

Lamw: Lazarus Android Module Wizard

ref. https://github.com/jmpessoa/lazandroidmodulewizard

I hope your understanding...

Thank you!

thanks for reply,but it seems not support all tbitmap method in thread with cthreads unit.Does  Lazarus Android Module Wizard support?

jmpessoa

  • Hero Member
  • *****
  • Posts: 2301
Re: Android Module Wizard
« Reply #432 on: May 18, 2015, 05:52:35 am »
@ greenzyzyzy,

Lamw has native jBitmap, native jImageFileManager, native jImageView and native jAsynTask....

You can try some demos apps....

Thank you!
Lamw: Lazarus Android Module Wizard
https://github.com/jmpessoa/lazandroidmodulewizard

rx3.fireproof

  • New Member
  • *
  • Posts: 49
Re: Android Module Wizard
« Reply #433 on: May 18, 2015, 02:02:05 pm »
Hello Jmpessoa

In the latest version, the jScrollView does not work.
     
(If it contains other components)


With Respect

rx3.fireproof


jmpessoa

  • Hero Member
  • *****
  • Posts: 2301
Re: Android Module Wizard
« Reply #434 on: May 18, 2015, 11:52:00 pm »
@ rx3.fireproof

Quote
....In the latest version, the jScrollView does not work.

Ok, FIXED !!!!

Thank you very much!!!!
Lamw: Lazarus Android Module Wizard
https://github.com/jmpessoa/lazandroidmodulewizard

 

TinyPortal © 2005-2018