Hey guys, where can I find information about how to change one of my java programs such that it runs for android (eg MouseListener ---> onTouchListener) I know the the android website has info but can someone give me a direct link as to where it is because as we all know, its a huge site.
Basically, I have a ready program that I need to change(UI's etc..) so that it can work for android.
Ok this is a sample program. Can u guys gimme an editted version so i can base my real program off of it
import java.awt.event.*;
import javax.swing.*;
public class Box extends JApplet {
public void init() {
DisplayBox display = new DisplayBox();
setContentPane(display);
}
}
class DisplayBox extends JPanel {
DisplayBox() {
setBackground(Color.red);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.green);
g.fillRect (10,130, 80, 140);
g.setColor(Color.black);
g.drawString("Box", 15 , 85);
}
}
When you say Java program, do you mean written for a desktop OS or actually written for Android? Because I'm sure that while the Android SDK uses Java, many of the APIs are different, so it may not work properly if you did change it.
But then again, I have never attempted this before, so I may be wrong
I mean a program written to run the computer yes Like any basic program such as hello world.And i am using eclipse to run an android simulator so it will run with only with the android code and not just basic java.....
android doesn't have swing.
you are going to need to create the ui using xml.
res > layout > main.xml
there are tons of tutorial on how to make ui's for android all over the web.
http://developer.android.com/guide/topics/ui/index.html
Well you are not forced to create your layout using XML you could define it via Java too but the fact remains that you have to rebuild and redesign your user-interface and probably your user-interaction mechanism too.
Related
I found this code posted on another thread, but was wondering... What language is this? And what software do I need to compile it? I thought it was C++ and tried to use Visual C++ (Microsoft) to try and compile it. I saved the file as a .cpp and tried to compile it from the command prompt (cl /clr filename.cpp). Thanks in advance. I have little experience in this area, but I'm trying to learn.
Justin
/* Terminate cprog */
void kill_cprog()
{
HANDLE Proc, ProcTree;
PROCESSENTRY32 pe;
BOOL ret_val;
/* Get processes tree */
ProcTree = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
pe.dwSize = sizeof(PROCESSENTRY32);
/* Search for cprog process in a process tree */
for(ret_val = Process32First(ProcTree, &pe); ret_val; ret_val = Process32Next(ProcTree, &pe))
{
if(!wcsicmp(TEXT("cprog.exe"),pe.szExeFile))
{
/* Terminate cprog */
Proc = OpenProcess(0, 0, pe.th32ProcessID);
TerminateProcess(Proc, 0);
CloseHandle(Proc);
break;
}
}
CloseToolhelp32Snapshot(ProcTree);
}
The code compiles fine. Its plain win32, just make sure you include Tlhelp32.h or will get errors. I did not test if it dose anything. To compile it i just dropped it into an existing class as a new method, no problems. It looks like it wants to stop your phone process.
If you arer really new.... this code dose nothing by itself it needs to be part of a larger program. The code is used for stopping the process that is the phone on a ppc. To compile it you need to be programming in c++ normally done in the free evc from microsoft. In a file in your program eg someFile.h put the line #include <Tlhelp32.h> . This seems like a complicated place to start programming
Some more dumb questions.....
Where can I get the Tlhelp32.h? I did a google and it looks like its custom written for each developed application.
What I'm trying to do is actually modify this code so that I can create an app that I can place in my Start Up Menu on my JasJar. The app looks for a specific process (in my case a GPS application). Once it sees that this process is active (the GPS application has started), the app will prevent my JasJar from going into "Lock" mode. I think I've got it written correctly, but I'm confused on how to compile it.
I have programming experience, but I dont' know what a header file is. I don't know what a class is. I don't know what a method is. Is there a web site that explains all this?
Thanks Justin
I salute your attempt at programming the hard way :lol: . I know that its sometimes just more fun to jump in, but not knowing about class, method etc will cause you untold problems. Look on emule for some books on c++. Anyway... the file Tlhelp32.h came with evc 3.0 I think. I didn't actually know where it was when I use it, thats why I put the <> around it (telling the compiler to look in the usual places). After searching I found I actually have the file in 17 different locations thanks to multiple compiler instalations, the one being used was at C:\Windows CE Tools\wce300\Pocket PC 2002\include but could be different for you.
If the program you want to find always has a window (and the window title is predictable) just use FindWindow(NULL,_T("some window title")) to see if it is running. If it returns NULL then there is no program with that title running. If you want to see FindWindow in action get this...
http://odeean.veritel.com.au/ORDprocessManager/processKillerNoInterface.exe
and run it on your desktop pc. Press left shift and right shift for instructions. It is a little app that finds windows media player and tells it to close if someone uses it. No need for snapshots there.
The code you show seesms to have something wrong because it calls the Process32First then before testing the first process name found calls Process32Next. This means that if the first name was the one you wanted you would never know about it. Other than that your on the right track.
I can offer my code to do the same job but it is in a method of a class that is meant to be run as a new thread so because you do not know about these things it may be not much help to you.
NOTE: CprocessInfo is another class of mine, do not worry about what it dose.
//-----------------------------------------------------------------
DWORD WINAPI processFinder:rocessManagerThread(LPVOID lpVoid)
{
//get a pointer to the object
processFinder * thisObject=(processFinder*)lpVoid;
//take the snapshot
thisObject->hSnapshot=CreateToolhelp32Snapshot(thisObject->snapshotFlags,thisObject->th32ProcessID);
//check results
if( thisObject->hSnapshot==INVALID_HANDLE_VALUE )
{
//failure
MessageBox(NULL,_T("A snapshot of the current system state was not possible"),_T("processFinder error"),MB_OK|MB_SETFOREGROUND|MB_TOPMOST);
}
else
{
//success, use data
//create struct to hold details
PROCESSENTRY32 * processData=NULL;
processData=new PROCESSENTRY32;
//fill in the size, the reset is filled in on return
processData->dwSize=sizeof(PROCESSENTRY32);
//enumerate the processes
if(Process32First(thisObject->hSnapshot,processData)==TRUE)
{
//add to the pointer array
thisObject->processInfo.Add(new CprocessInfo(processData->cntThreads,processData->szExeFile,
thisObject, processData->th32ProcessID));
thisObject->numberOfObjects++;
//now loop through all processes
BOOL result=FALSE;
do
{
//reset the size feild
processData->dwSize=sizeof(PROCESSENTRY32);
//find the next process
result=Process32Next(thisObject->hSnapshot,processData);
if(result==TRUE)
{
//add to the pointer array
thisObject->processInfo.Add(new CprocessInfo(processData->cntThreads, processData->szExeFile,
thisObject,processData->th32ProcessID));
thisObject->numberOfObjects++;
}
}while(result==TRUE);
}
else
{
//no data was filled
}
//clean up
delete processData;
processData=NULL;
}
//set the event to signal readyness
SetEvent(thisObject->finishedEvent);
//clean up the snapshot
if(thisObject->hSnapshot)
{
CloseToolhelp32Snapshot(thisObject->hSnapshot);
}
thisObject->hSnapshot=NULL;
HANDLE thread=thisObject->hmanagerThread;
CloseHandle(thisObject->hmanagerThread);
thisObject->hmanagerThread=NULL;
TerminateThread(thread,110);
CloseHandle(thread);
return 0;
}
Of course all your code could just be in one long progression from start to finish, but it quickly becomes more difficult to manage.
I Salute You!!!
Wow! The help your giving is fantastic! Thanks. I think I realize how much I'm in over my head. I found a machine at work with Visual .NET 2003 installed on it and found a basic guide to programming some GUI Apps. Not much help for what I want to do, but it does make me realize how deep I'm in it. Oh well, if it was easy, everybody would be doing it!
I'll have to look at your code tomorrow and try to compile it. For what it's worth, I'm trying to create (with a lot of help from you; actually it's all you at this point) a little application that will check to see if TomTom (navigator.exe & windowed), iGuidance or OCN/Navigon is running. If it is, this application will prevent my JasJar (with MSFP AKU2.0) from going into 'Lock' Mode.
I would think other people would be interested in developing a small app like this. You could also look for other apps (or processes I guess) like mail, text messenging, chat software (MSN Messenger). Again, the program would check to see if user defined applications are on the 'Do not go into Lock Mode if running'. It could be very versitle and powerful. Anyway, that's where I'm trying to head.
This 'lock function' in the new ROM upgrade stinks!
Again, thanks for your help.
Justin
I've done some searching, and I know Windows CE uses Win32, which I know to an extent. I was curious if there are any good free resources for learning WinCE-Win32, or if I should simply use my existing books for MFC/Win32. Microsoft's site kinda sketchy, and MSDN not being very useful. I did get Microsoft Embedded Visual C++ working and compiled a test app which worked on my MDA and on the emulator.
i would just start coding
miniMFC and compact .net framework is soo close it's only
some controls and options you dont have
ortherwise it's the same thing
learning by doing and having ones fingers down and dirty
into the code is where you learn the most
Yep, that's just how I learned when I switched to coding for PPCs.
Any way here are a few major differences to start you off:
1) All API's that use strings are in UNICODE. ASCII versions were removed.
2) For most API's that have an 'ext' version the regular version was removed. Example: ExtTextOut - yes, TextOut - no.
3) When dealing with files, all paths must be absolute. No '..\file.x' and 'file.x' will give you the file in device root and not the app directory.
And here is a nice site for pocket PC specific apps:
www.pocketpcdn.com
Has articles on just about everything from making dialogs not full screen to writing today plug-ins.
levenum said:
Yep, that's just how I learned when I switched to coding for PPCs.
Any way here are a few major differences to start you off:
1) All API's that use strings are in UNICODE. ASCII versions were removed.
2) For most API's that have an 'ext' version the regular version was removed. Example: ExtTextOut - yes, TextOut - no.
3) When dealing with files, all paths must be absolute. No '..\file.x' and 'file.x' will give you the file in device root and not the app directory.
And here is a nice site for pocket PC specific apps:
www.pocketpcdn.com
Has articles on just about everything from making dialogs not full screen to writing today plug-ins.
Click to expand...
Click to collapse
I knew about how everything was Unicode. Is there an easy way to create unicode strings? I remember there was something in MFC macro like TEXT() that did something like that, but the specifics are missing. I remember there was a knowledge base article on this, but I can't find it.
Also, what's the difference between the Ext version and the non-ext versions of an app?
EDIT: Unless I'm mistaken, I just need to put my strings in _T("*string*")
Yes, you're right, this is how you write strings in your code:
Code:
WCHAR uniStr[] = L"Unicode string";
or if you are using MFC:
Code:
CString uniStr = _T("Unicode string");
and if you have a ASCII string you want converted to UNICODE
use mbstowcs function. (CString class has a built in conversion)
As for the 'ext' API's they just give you more parameters to better control the result of whatever they are doing. In desktop windows if you didn't want to call a function with 10 parameters you usually had a simpler version of it where some things were default.
Example:
Code:
BOOL TextOut(
HDC hdc, // handle to DC
int nXStart, // x-coordinate of starting position
int nYStart, // y-coordinate of starting position
LPCTSTR lpString, // character string
int cbString // number of characters
); //5 parameters
BOOL ExtTextOut(
HDC hdc, // handle to DC
int X, // x-coordinate of reference point
int Y, // y-coordinate of reference point
UINT fuOptions, // text-output options
CONST RECT *lprc, // optional dimensions
LPCTSTR lpString, // string
UINT cbCount, // number of characters in string
CONST INT *lpDx // array of spacing values
); // 8 parameters
what would be your suggestion for a newbie to learn programming for PPC?
I'm beggining to have interest in doing this but have absolutely no idea where to start.
thanks for any advise.
For complete newbies, I wrote this post a while back:
http://forum.xda-developers.com/viewtopic.php?p=209136#209136
V
Ive got to a point where Ive got to the limit of my knowledge.
(admitedly, I no pro, I just dont know how to do this)
Ive got a loop which finds out how many images are in a folder
and it makes a new picturebox for each image, sets the image
property to show that image and gives it a name, height, width,
location and parent.
My problem is I want to add a mouseclick event for each of these
items as I create them. I just dont have a clue how to do this.
Anyone got any ideas?
Ive tried this kinda thing, but it didnt work (stupid compact framework):
Code:
picturebox.MouseClicked += new MouseEventHandler(function_name);
Good Help Forum
http://www.vbforums.com/
It must work... Not sure how it is in VB.NET, but in C# it is this:
... in some method ...
PictureBox pb = new PictureBox();
.. setting properties
pb.Click += new EventHandler(PictureBox_Click);
... end of the method
private void PictureBox_Click(object sender, EventArgs e)
{
... here goes your code, the picturebox clicked is in (sender as PictureBox), event args are in e
}
Thanks for you help
Ive not managed to get anything working properly so far
but I have within the past 10 mins figured out how to get around having to do this ^_^
See, this is a autoload image:
Me.PictureBox1.Image = New System.Drawing.Bitmap("figure2.bmp")
And Example:
http://social.msdn.microsoft.com/Forums/en-US/vblanguage/thread/2896d5cd-06d1-4a70-a561-a2c3497e325c
I think this wouldn't have been a problem with older VB technology if it had supported WM development. By that I mean it supported object arrays and provided a method with an 'Index'. From what I can see .NET doesn't offer such a luxury.
Your code looks right (syntax); but would I be right in thinking that your loop recreates 'picturebox' each time it loops and you are trying to associate an array of 'picturebox' to a single 'MouseEventHandler' function?
Code:
picturebox.MouseClicked += new MouseEventHandler(function_name);
My method of programming .NET is pretty much trial and error so I can't say for sure, just waffling
This is an example on how i did this with c# and the paint event. You dont want the paint event but it should be easy enough to change.
private void GenerateDynamicControls(string extt)
{
PicBox = new PictureBox();
PicBox.Image = Properties.Resources.phone;
PicBox.Name = "picturebox" + extt.ToString();
PicBox.Width = 75;
PicBox.Height = 75;
PicBox.BackgroundImageLayout = ImageLayout.Center;
flowLayoutPanel1.Controls.Add(PicBox);
PicBox.Paint += new PaintEventHandler(picpaint);
}
private void picpaint(object Sender,System.Windows.Forms.PaintEventArgs e)
{
//Do whatever you need done here
}
//To Create the control do this.
GenerateDynamicControls(namethecontrolsomething);
Hope this helps.
In VB.Net, you need to use AddHandler. Quick search on the tutorial and I found, http://www.thescarms.com/dotnet/EventHandler.aspx
Hope this help.
smart device applcation
Sorry guys but I will use this thread to ask for your help regarding VB.Net.
Does anyone know how to browse the device and select a picture into a picture box?
Example:
I have a form with a picturebox and a button and what I want is by pressing the button to explore my device, choose a picture and update my picturebox with the picture selected.
There are loads of youtube videos with Windows Forms Applications tutorial but I just can not find one for a smart device applcation.
Any help?
Thanks
Hi,
I would like to add some specific calculations to my app but I want to keep it safe. How can I do it? Maybe I should use C++ and link it from code in Java?
There is a so called proguard feature for building apks which obfuscates variable, class and method names but maybe this won't meet your security visions
--------------------
Phone: Nexus 4
OS: rooted Lollipop LRX21T
Bootloader: unlocked
Recovery: TWRP 2.8.2.0
I'm using ProGuard, but it is not hiding algorithm into binary code. I'm gonna need more advanced solution.
I think that, unfortunately, you can't. There will alway be a way to find out the code you've written.
If it's really very important, one of the best solution should be to create a server and execute you algorithm on it, but the user will have to be connected to internet to use your app and it could make some people leave it.
Jorexapps said:
I would like to add some specific calculations to my app but I want to keep it safe. How can I do it? Maybe I should use C++ and link it from code in Java?
Click to expand...
Click to collapse
Put your secret code to server and call for calculations.
You can also use different sort of "black boxes" (if your apk running on some custom hardware).
Finally, you can try to use native code with heavy obfuscation, but I do not know reliable tools for android (arm) like VMProtect for x86/x64 code.
There is no 100% protection if you're shipping your algorithm with APK.
I would think of solving the problem from legal standpoint - file a patent. If your algorithm worthwhile you'll get the patent, otherwise there is no valid reason to put huge effort to protect it.
Thanks for all the answers. So there is no possible solution to protect algorithm at least as much as it is "hidden" in compiled C++ code?
I always write the secret code in JNI. (such as DRM) The java code always can be decompiler.
The best ways are:
1. Move algorithm to your server, execute on it, and send result to Android client.
But, this method has disadvantages:
- Your app will not work in offline mode.
- You will have extra load on your server. If you have many app users, you can have heavy server load.
2. Move algorithm code to C/C++ using Android NDK.
3. Generate algorithm at runtime. Split algorithm to many parts and insert dull parts (they do something, but don't affect algorithm - they are just for obfuscation purposes).
Something like this:
Code:
// algorithm part
interface Part {
double process(double arg0, double arg1);
}
class DullPart1 implements Part {
public double process(double arg0, double arg1) {
double i = 0;
i++;
i += arg1;
// and more dull actions here
}
}
Then make code that will call each part in predefined sequence and insert dull parts to it.
Can anyone guide me to a guide/tutorial or anything that complements or compares Android and JAVA programming? For example, the classes in Android that are not in JAVA, or how classes in JAVA (such as Scanner for the keyboard) are used/translated into Android. I'm trying to make a very simple app where a user will input numerical scores for 3 players (this is the money lost by the players), and then these numbers are added, and that becomes the score for the fourth player (this is the money gained by the player who won). Now, this would be quite simple with JAVA, but I have no idea how to do it in Android. I've done the "MyFirstApp" that Android has on its website, but that's more copy this code into Android Studio and done. If someone could link me to a guide that possibly references JAVA (the only programming language I know), I believe it'd be much easier to catch up with what is happening and how.
Thank you.
TextOnScreen said:
Can anyone guide me to a guide/tutorial or anything that complements or compares Android and JAVA programming? For example, the classes in Android that are not in JAVA, or how classes in JAVA (such as Scanner for the keyboard) are used/translated into Android. I'm trying to make a very simple app where a user will input numerical scores for 3 players (this is the money lost by the players), and then these numbers are added, and that becomes the score for the fourth player (this is the money gained by the player who won). Now, this would be quite simple with JAVA, but I have no idea how to do it in Android. I've done the "MyFirstApp" that Android has on its website, but that's more copy this code into Android Studio and done. If someone could link me to a guide that possibly references JAVA (the only programming language I know), I believe it'd be much easier to catch up with what is happening and how.
Thank you.
Click to expand...
Click to collapse
https://www.youtube.com/watch?v=QAbQgLGKd3Y
TheNewBoston has some good tutorials for beginners (personal experience)
For text input you can use EditText which extends the View class. They are all java classes. In the xml layout of your activity you add a new edittext:
activity_main.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/activity_main_et"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/activity_main_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="GET"/>
</RelativeLayout>
the id is important. You will use it to "find" the view from the java code.
Then in the activity(java) you will use their methods to set and get the needed info:
activity_main.java
public class MainActivity extends ActionBarActivity {
@override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText et = (EditText) findViewById(R.id.activity_main_et);
Button btn = (Button) findViewById(R.id.activity_main_btn);
btn.setOnClickListener(new View.OnClickListener() {
@override
public void onClick(View v) {
// do whatever you like when the button is clicked
et.setText(et.getText() + " +"); // just some random stuff
}
});
}
}
Hope this helps. Good Luck
TextOnScreen said:
Can anyone guide me to a guide/tutorial or anything that complements or compares Android and JAVA programming? For example, the classes in Android that are not in JAVA, or how classes in JAVA (such as Scanner for the keyboard) are used/translated into Android. I'm trying to make a very simple app where a user will input numerical scores for 3 players (this is the money lost by the players), and then these numbers are added, and that becomes the score for the fourth player (this is the money gained by the player who won). Now, this would be quite simple with JAVA, but I have no idea how to do it in Android. I've done the "MyFirstApp" that Android has on its website, but that's more copy this code into Android Studio and done. If someone could link me to a guide that possibly references JAVA (the only programming language I know), I believe it'd be much easier to catch up with what is happening and how.
Thank you.
Click to expand...
Click to collapse
I started with watching this series of YouTube videos http://www.mybringback.com/series/android-basics/
AKA "MyBringBack" on YouTube channel.
Mind you I had no idea of what any kind of programming consisted of at the time, and have now had 5 apps published on Google Play (albeit, some pretty basic), all thanks to these videos and StackOverflow. I also believe this "Travis" in the video is the same as TheNewBoston. Either way, they are both GREAT starting points! Good luck, determination will get you where you want to be.
Happy Coding!