[TOOL]Logcat Tool - Android Software/Hacking General [Developers Only]

FIXED HUGE ISSUE CAUSING EMPTY FILES
DOWNLOAD
PM or post here if you run into any issues. They WILL be addressed.
I have made a tool to simplify Logcat creation for people. The creation of this tool was inspired, and guided, by the thread started HERE by paxChristos.
UPDATE 4.1
Corrected an issue causing empty files.
apparently, if the process id contained a space ( 1234) the file would parse correctly, but if the numbers came up to the parenthesis (12345) it would output an empty file named ACTIVITY(12345) with no extension.
This was a huge issue, and i apologize for not seeing it sooner. It has been corrected, and the logcat tool works better than ever. I just ran through a 20,000 line logcat without any empty files appearing.
a couple more things to help with stability.
Underscores (_) will be replaced by dashes (-)
Brackets ([]) and arrows (<>) will be replaced with paranthesis(())
-------------------------------------------------------------------------------------------------------------
HUGE UPDATE
Added the ability to "SUPER PARSE" Files, which separates files into folders by log level and creates a TXT file for each activity
EX.
.[OUTPUT FOLDER]-->
.....[DEBUG LEVEL FOLDER] --->
............... BACKUPMANAGER.TXT
............... SURFACFLNGER.TXT
................ETC...
Super parse DOES NOT Work with LONG format Logs.
SUPER PARSE is in its infancy I do expect errors, please let me know if you run into anything.
EDIT V3.6 DONE
Added ability to filter logcats by activity name. (logcat -s "FILTER")
Fixed Log Level Setting
EDIT V3.5 DONE
NOW PROPERLY PARSES "LONG" FORMAT LOGCATS.
Thank you to Senior Member jes0411 for pointing out the issues that lead me to create V3.4 and 3.5. If any of you have an issue please let me know. It could be hours before i get to it or weeks, but i will get to fixing it.
EDIT V3.4 DONE
Changed the way the date variable was handled to hopefully fix issues experienced by users of non-English versions of windows.
EDIT V3.3 DONE
modified the output to include the log level before the logcat as seen below;
ERROR LEVEL
Code:
"E/MotionRecognitionService( 902): mReceiver.onReceive : ACTION_USER_PRESENT :: UNLOCK SCREEN"
"E/Watchdog( 902): @Sync 96"
"E/Watchdog( 902): @Sync 97"
"E/ActivityThread(22620): Activity com.google.android.music.ui.TrackContainerActivity has leaked IntentReceiver [email protected] that was originally registered here. Are you missing a call to unregisterReceiver()?"
"E/ActivityThread(22620): android.app.IntentReceiverLeaked: Activity com.google.android.music.ui.TrackContainerActivity has leaked IntentReceiver [email protected] that was originally registered here. Are you missing a call to unregisterReceiver()?"
"E/ActivityThread(22620): at android.app.LoadedApk$ReceiverDispatcher.<init>(LoadedApk.java:814)"
"E/ActivityThread(22620): at android.app.LoadedApk.getReceiverDispatcher(LoadedApk.java:610)"
"E/ActivityThread(22620): at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1774)"
"E/ActivityThread(22620): at android.app.ContextImpl.registerReceiver(ContextImpl.java:1754)"
"E/ActivityThread(22620): at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:486)"
"E/ActivityThread(22620): at android.widget.ViewFlipper.onAttachedToWindow(ViewFlipper.java:93)"
"E/MP-Decision( 2125): DOWN cpu:1 core_idx:1 Ns:1.100000 Ts:190 rq:0.000000 seq:196.000000"
LOGCAT GENERATED BY FUZZYMEEP TWO'S LOGCAT TOOL
AS OPPOSED TO
Code:
"E/MotionRecognitionService( 902): mReceiver.onReceive : ACTION_USER_PRESENT :: UNLOCK SCREEN"
"E/Watchdog( 902): @Sync 96"
"E/Watchdog( 902): @Sync 97"
"E/ActivityThread(22620): Activity com.google.android.music.ui.TrackContainerActivity has leaked IntentReceiver [email protected] that was originally registered here. Are you missing a call to unregisterReceiver()?"
"E/ActivityThread(22620): android.app.IntentReceiverLeaked: Activity com.google.android.music.ui.TrackContainerActivity has leaked IntentReceiver [email protected] that was originally registered here. Are you missing a call to unregisterReceiver()?"
"E/ActivityThread(22620): at android.app.LoadedApk$ReceiverDispatcher.<init>(LoadedApk.java:814)"
"E/ActivityThread(22620): at android.app.LoadedApk.getReceiverDispatcher(LoadedApk.java:610)"
"E/ActivityThread(22620): at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1774)"
"E/ActivityThread(22620): at android.app.ContextImpl.registerReceiver(ContextImpl.java:1754)"
"E/ActivityThread(22620): at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:486)"
"E/ActivityThread(22620): at android.widget.ViewFlipper.onAttachedToWindow(ViewFlipper.java:93)"
"E/MP-Decision( 2125): DOWN cpu:1 core_idx:1 Ns:1.100000 Ts:190 rq:0.000000 seq:196.000000"
LOGCAT GENERATED BY FUZZYMEEP TWO'S LOGCAT TOOL
EDIT V 3.2 Finished
Google code won't allow any new uploads, so i will attach the new update here in a ZIP file.
Fixed ADB Location settings, some users were having trouble if they input the ADB folder with any quotation marks in the path name, it will now automatically remove quotation marks to ensure correct syntax.
Fixed issue with ADB Location setting not exiting to previous menu.
Fixed issue with Log Level setting not exiting to previous menu.
Capitalized some stuff
Added a feature that will automatically create the selected folder if no output folder exists and the user attempts to run a log.
Added a check when selecting an output folder that will ask if you want the folder created if it does not exist
NOW PARSES FILES
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
OUTPUTTING SEPREATE FILES:
(DEBUG).TXT
(ERROR).TXT
(INFO).TXT
(VERBOSE).TXT
(WARNING).TXT
ETC..
AS WELL AS A FULL LOGCAT
EXAMPLE OUTPUT "INFO" LEVEL FILE
Code:
"I/LocationManagerService( *495): request passive (pid 9909) 0 0"*
"I/LocationManagerService( *495): request passive (pid 3221) 60000 0"*
LOGCAT GENERATED BY FUZZYMEEP TWO'S LOGCAT TOOL
****OLD STUFF*****
EDIT V3.1 DONE
FIXED OPTIONS 7 & 8, URLS WERE MISSING A "?"
CHANGELOG EDITS
SAVES AND PARSES FILES IN TO DIFFERENT OUPUT FILES BASED ON LOG LEVEL (E , I , D , W , ETC)
EDIT V3 DONE
https://code.google.com/p/logcat-tool/downloads/list
added a logcat icon to exe
various bug fixes
addeed "HIDE" brackets (Thank you Szczepanik)
EDIT:
Many bug and typo fixes.
Now Saves Settings.
Easy XDA option adds
Code:
brackets for easy posting to XDA.
There are now key words you can enter to execute actions instead of just numbers ex. "LOG" to start logging or HELP for help
Automatically adds "/" to end of directories entered if forgotten.
[/HIDE]
Keywords:
Logcat Parsing
How to parse logcat
Windows Logcat
Logcat Tool
Windows Parse Logcat

FuzzyMeep Two said:
I have made a tool to simplify Logcat creation for people. The creation of this tool was inspired, and guided, by the thread started HERE by paxChristos.
LOGCAT TOOL by FuzzyMeep TWO
I made this in about a half hour, so if you fnd any issues let me know. I believe i worked out all functionality issues, and do plan on expanding functionality in the future. This is written in Batch, and compiled with QuickBFC.
https://code.google.com/p/logcat-tool/
Edit: source here.
Batch Source
Click to expand...
Click to collapse
Let me test it for you
Sent from my NexusHD2 using xda premium

EDIT V3.1 DONE
FIXED OPTIONS 7 & 8, URLS WERE MISSING A "?"
CHANGELOG EDITS
SAVES AND PARSES FILES IN TO DIFFERENT OUPUT FILES BASED ON LOG LEVEL (E , I , D , W , ETC)
apurohit said:
Let me test it for you
Sent from my NexusHD2 using xda premium
Click to expand...
Click to collapse
Have at it, click the link above, it should download. the only thing i think it is missing is search filters, but that will be added asap, or, if you're feeling generous (anyone) feel free to take the batch source and add to it.
Download page

you still working on this?

very useful...keep up the good work !

grr windows

congrats for getting on homepage !

EDIT V3.1 DONE
FIXED OPTIONS 7 & 8, URLS WERE MISSING A "?"
CHANGELOG EDITS
SAVES AND PARSES FILES IN TO DIFFERENT OUPUT FILES BASED ON LOG LEVEL (E , I , D , W , ETC)
Shano56 said:
you still working on this?
Click to expand...
Click to collapse
I haven't added anything in a while, but like i said, do intend to add filtering, i already started the framework in the file (variables, menus and such) it was juts giving me all kinds of sh*t so i backed off and fixed some other more pressing bugs. But i think i will hop back on it soon, and add filtering.. And, if you (anyone) have any suggestions, let me know.

Thank you, thank you. Good job, and works.

New and improved!!!
EDIT V3.1 DONE
FIXED OPTIONS 7 & 8, URLS WERE MISSING A "?"
CHANGELOG EDITS
SAVES AND PARSES FILES IN TO DIFFERENT OUPUT FILES BASED ON LOG LEVEL (E , I , D , W , ETC)
EDIT: BUG FIX UPDATE HERE
The last version removed a "*" on me so it had a great potential for closing itself, so i have repaired the problems.
Many bug and typo fixes.
Now Saves Settings.
Easy XDA option adds
Code:
brackets for easy posting to XDA.
There are now key words you can enter to execute actions instead of just numbers ex. "LOG" to start logging or HELP for help
Automatically adds "/" to end of directories entered if forgotten.

[HIDE]
As Logcats are usually quite long, may I suggest that, as well as the
Code:
brackets
[QUOTE="FuzzyMeep Two, post: 30573127, member: 4507027"]Easy XDA option adds [CODE] brackets for easy posting to XDA.[/QUOTE]
you also add [B][HIDE][/B] brackets (see my sig).
Cheers
Tom

Szczepanik said:
As Logcats are usually quite long, may I suggest that, as well as the
Code:
brackets
you also add [B][HIDE][/B] brackets (see my sig).
Cheers
Tom[/QUOTE]
That is a great idea, thank you... will do.
Click to expand...
Click to collapse

FuzzyMeep Two said:
I have made a tool to simplify Logcat creation for people. The creation of this tool was inspired, and guided, by the thread started HERE by paxChristos.
EDIT:
Many bug and typo fixes.
Now Saves Settings.
Easy XDA option adds
Code:
brackets for easy posting to XDA.
There are now key words you can enter to execute actions instead of just numbers ex. "LOG" to start logging or HELP for help
Automatically adds "/" to end of directories entered if forgotten.
EDIT: BUG FIX UPDATE [URL="http://code.google.com/p/logcat-tool/downloads/detail?name=logcatTool.exe&can=2&q="]HERE[/URL]
The last version removed a "*" on me so it had a great potential for closing itself, so i have repaired the problems.[/QUOTE]
I downloaded your updated apk as a file logcatTool.exe to my SGS I9000 , but the file is not executable. Have you instructions?
Thank you
Click to expand...
Click to collapse

You should add a grep-like function to enable seperate I, W, E logcat (info, warning, error)
Sent from my Galaxy Nexus running Android 4.2 JB

I have made a tool to simplify Logcat creation for people. The creation of this tool was inspired, and guided, by the thread started HERE by paxChristos.
EDIT V 3.2 Finished
Google code won't allow any new uploads, so i will attach the new update here in a ZIP file.
Fixed ADB Location settings, some users were having trouble if they input the ADB folder with any quotation marks in the path name, it will now automatically remove quotation marks to ensure correct syntax.
Fixed issue with ADB Location setting not exiting to previous menu.
Fixed issue with Log Level setting not exiting to previous menu.
Capitalized some stuff
Added a feature that will automatically create the selected folder if no output folder exists and the user attempts to run a log.
Added a check when selecting an output folder that will ask if you want the folder created if it does not exist
NOW PARSES FILES
OUTPUTTING SEPREATE FILES:
(DEBUG).TXT
(ERROR).TXT
(INFO).TXT
(VERBOSE).TXT
(WARNING).TXT
ETC..
AS WELL AS A FULL LOGCAT
EXAMPLE OUTPUT "INFO" LEVEL FILE
Code:
"I/LocationManagerService( *495): request passive (pid 9909) 0 0"*
"I/LocationManagerService( *495): request passive (pid 3221) 60000 0"*
LOGCAT GENERATED BY FUZZYMEEP TWO'S LOGCAT TOOL
****OLD STUFF*****
EDIT V3.1 DONE
FIXED OPTIONS 7 & 8, URLS WERE MISSING A "?"
CHANGELOG EDITS
SAVES AND PARSES FILES IN TO DIFFERENT OUPUT FILES BASED ON LOG LEVEL (E , I , D , W , ETC)
EDIT V3 DONE
https://code.google.com/p/logcat-tool/downloads/list
added a logcat icon to exe
various bug fixes
addeed "HIDE" brackets (Thank you Szczepanik)
EDIT:
Many bug and typo fixes.
Now Saves Settings.
Easy XDA option adds
Code:
brackets for easy posting to XDA.
There are now key words you can enter to execute actions instead of just numbers ex. "LOG" to start logging or HELP for help
Automatically adds "/" to end of directories entered if forgotten.
[/HIDE]

Fix website adress on OPTION 7 & 8 in console. These options not working.

zomer331 said:
Fix website adress on OPTION 7 & 8 in console. These options not working.
Click to expand...
Click to collapse
All fixed, thank you... i had accidentally removed a ? from each URL.

great work!
now... is there a tutorial on how to use this, for a noob like me?
i don't know the first thing about this stuff or how to use it

x000x said:
great work!
now... is there a tutorial on how to use this, for a noob like me?
i don't know the first thing about this stuff or how to use it
Click to expand...
Click to collapse
Try here to familiarize yourself with logcats a little, run the program alongside it and choose the options you need, you will need adb setup on your pc already. For the most part the program can be run with default options, and you can then parse the file and choose the log level you need from the output files.

Edit. Disregard. I'm retarded sometimes

Related

[Dec 2012] Android SMS Importer from WM PimBackup files

This utility allows to convert PimBackup files to XML one which is
compatible with Android application "SMS Backup&Restore" created by
Ritesh Sahu (* check the author to match the right application on Market *).
After the conversion the XML file contains all your SMS and you can Import
them to you Android smartphone.
This utility doesn't require any installation process or additional DLLs,
in order to start using it, just run the executable file.
WARNING: I've tried to restore about 11,000 SMS with success on "Motorola Atrix 4G" and it seems to freeze many times while running stock "Text Messaging" application.....so I think 11,000 SMS is too much to handle for Android OS
Versions History
=============
* Version 2.0.0.4 (2012-12-13)
- New Draft Folder support
- Messages in Custom Folders are now moved to Inbox or Outbox
- Minor bug fixes
* Version 2.0.0.2 (2012-11-28)
- New option (only for CMS files): Discard self-test messages
- New option to convert not supported folders in In/Outbox
* Version 2.0.0.1_beta1 (2012-11-14)
- New advanced graphic design
- PimBackup binary files (*.pbm) supported!!!!!!
* Version 1.0.1.0 (2011-09-28)
- If it enconters an irreversible error it will asks if you want to continue without stopping conversion
* Version 1.0.0.9 (2011-09-26)
- Managed splitted Conversation/SMS text in multi-rows (messages with Carriage Return)
* Version 1.0.0.8 (2011-07-27)
- Fixed negative values for TimeZone offsets
* Version 1.0.0.7 (2011-07-27)
- Added TimeZone and Date/Time management to increase/decrease according to your local TimeZone
* Version 1.0.0.6 (2011-07-04)
- Fixed bug while using special characters like "&" or quote
* Version 1.0.0.5 (2011-04-21)
- Fixed bug for Inbox messages if SenderName and/or SenderAddress is empty
* Version 1.0.0.4 (2011-04-21)
- Managed empty "SenderName" and "SenderAddress" for Outgoing messages. Now those messages will be considered well.
- Draft, Trash and Outgoing folders (from CSM file) are not converted in any case because Android hasn't got those folders.
* Version 1.0.0.3 (2011-04-19)
- Added "Text Encoding" option to decide output file text encoder ("UTF-8" is the most common)
- Managed empty "SenderName" and "SenderAddress" data from input files. Now those messages will be discarted
* Version 1.0.0.2 (2011-04-19)
- Added an option to stop decodification after have decoded a specified amount of messages
- Managed "line-brakes" in messages. Those line-brakes will be removed from the message
- Managed "self-test" messages. Those self-test messages will not be added to output file
- Fixed a bug that truncates TextMessage at first "semicolon" character
- Added an "Error" section to show occurred errors
* Version 1.0.0.1 (2011-04-18)
- Uncompressed Executable file for better compatibility on multiple Windows OS
* Version 1.0.0.0 (2011-04-06)
- First release
Create a good backup file with PimBackup
=================================
The software is dummy and need a good/perfect file to work fine; in other words it needs
a good PimBackup file.
Let's create that file:
* open PimBackup in your Windows Mobile phone/smartphone
* choose "Backup" from dropdown list
* select sections as you wish but not forget "Messages"!!
* press "Next"
* (if you have a lot of SMS do not select "Create temp files in memory")
* press "Next" and go-on following the Wizard....
Find CSM or PBM file
===================
At the end of procedure above you will have a single PIB file.
This file is compressed and you can open it with WinZip/WinRAR/7Zip.
* So, please open it and look for "*.cms" or "*.pbm" file.
* Extract it from the compressed file.
That's it!!
Start the conversion
==================
Ones located CSM/PBM file you will want to convert it, right?
* Open "PimbackupDroid.exe" (this software of course!)
* Click "Menu --> Open" and select a CSM/PBM file
* [only for CMS] Enter "Your phone number for comparison". This field is necessary because
this is the only way to identify you as the sender of outgoing messages.
You can use simple numbers without international prefix (Ex: 0039 or +39).
* (optional) Check "Only between dates" to force convert just SMS between
two specified dates. It works for both incoming and outgoing messages.
* (optional) Check "Blacklist" OR "Whitelist" radio button if you want to
EXCLUDE (blacklist) some contacts or you just WANT (whitelist) convert
just some specified contacts.
!!WARNING!! - Blacklist and Whitelist using "Partial" input data, in
other words if you will add "Edward" in one of those all
contacts CONTAINS "Edward" word will be blacklisted/whitelisted,
for example also "Edward2" will be affected.
Both Blacklist and Whitelist are case insensitive (no difference between
"Smith" and "SMITH").
* Press "Start" button. It will generate a NEW file with the same name of original
one but with ".xml" extension. (!!WARNING!! - it doesn't ask for overwriting)
Import XML file on Android OS
========================
Now you have an XML file generated with this utility and you need to download
a small (and FREE) application from Android Market:
*SMS Backup & Restore" created by "Ritesh Sahu" (!!!check the author name!!!)
Install it
Before run this new installed utility you need to create a new "SMSBackupRestore"
folder in you Internal Phone Storage's root directory.
Now you can copy your XML file to this new folder and run the new Android application.
This Android utility is very very easy to understand: just press "Restore" button
and select your XML file.
Now wait until errors (ops!!) or successfully popup window!
System Requirements
==================
This utility works properly on all 32-bit/64-bit versions of Windows,
including Windows 98/ME, Windows NT, Windows 2000, Windows XP, Windows
Server 2003, Windows Vista, Windows Seven and Windows 8.
Personally tested on: Windows 7 Ultimate 64bit, Windows XP 32bit and Windows 8 Pro 64bit
Linux users: I think this software will works with "WINE" but not tested.
Disclaimer
==========
The software is provided "AS IS" without any warranty, either expressed
or implied, including, but not limited to, the implied warranties of
merchantability and fitness for a particular purpose. The author will not
be liable for any special, incidental, consequential or indirect damages
due to loss of data or any other reason.
Issues/Limitations
===============
- MMS/e-mails not supported
- Attachments (like images or files) not supported
Screenshot
===========
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Download at Sourceforge.net
======================
https://sourceforge.net/projects/pimbackupdroid/
Any idea on what to add more to this software??
Post reserved to author
This sounds great. I have a lot of old SMS I'm missing after switching to android. I'm going to test it as soon as I'm with my PC tommorow morning. Will report back then.
Sent from my HTC HD2 using XDA App
emandt, I tried to download your SW from the page you have listed, but it looks like folder is empty...?
As I've wrote in first post: project just opened at SF.net, so be patient
I'm creating a small README as Guide and prepare source code to place it on SF.net very soon.
OK, I was under impression at least test version is available. I'll wait
Released the first version few hours ago.
Check the Limitations (first post) before post a bug
I've realized my PIM backup files are .pib, not .csm. Is there any way how to move it to .csm? Except of restoring and archiving again through WM...I have only one phone
Thanks.
Please read the description at first post or the README file following the EXE.....
The ".CSM" file IS INTO the PIB file.
PIB file is just a compressed file to handle multiple files in single one.
Use WinZip / WinRaR / 7-Zip to open the PIB file and extract CSM one.
If your backup was created with "Binary backup(faster)" options it's impossibile to convert with my software (no any description/protocol about "How To Read" a Binary file created by BimBackup)....so, in this case, I think you need to Restore all messages and start the backup (without THAT option!!) again....sorry.
However I will study (raw mode with thousands of tries) "Binary backups" to allow them as non-binary ones.
I'm sorry I have overlooked this step. The problem is that even when I open .pib file, there is no .csm. Actualy, all extensions begin with .p**. Could be the reason that I have somehow checked "binary backup" in WM PIM?
I'm hot to test your SW but obviously I'm not a good tester
BTW, why don't you move this topic between general android applications, to have it more visible in the forum?
I'm trying to read binary backup files but without any description from author is very very hard to resolve this step. I've not found a schema for the data into binary files yet.
I've studied BINARY backup and already found half-solution, at least for NAME, TELEPHONE_NUMBER and TEXT_MESSAGE.....not I'm stuck at "Date and Time field"....
I've wrote to PimBackup author and I hope he will respond me with the solution.
Stay tuned
Nice initiative
Hi,
first of all, congrats for the iniative. Sorrowfully, it doesn't work for me (Access Violation at address 004ccea0 [...] @ address 00000004
If this helps: W7 x64 Pro @i5
For people who have their backups in binary format, from this same forum (don't remember the threads tho, sorry) came these tips:
1) Download Microsoft Windows mobile 6.5 Professional Developer Tools (goole it or "Windows Mobile 6.5 emulator");
2) run the appropriate version of the emulator;
3) "install PimBackup and restore your backup (set up a "shared Folder" for that, it will appear as a storage card);
4) redo your backup without binary format unchecked;
5) have fun! (if you're reading this thread, you know the rest already )
Also, see this link: Transferring contact list from Windows Mobile to Android SANS OUTLOOK
Have fun! I'll have to wait the next stable version.
It's strange....I'm using Win 7 Ultimate 64bit in italian language.
What OS language?
What is your OS alphabet in use?
I've developed this application quiclky and I don't have considered alphabets and non-latin characters. Maybe it could be this.
I'll spend more time to make it works on other OS settings
@tuliogs: if your Error is generated during startup of application you can try new version (v.1.0.0.1 folder on download section) which has an uncompressed Executable file to increase compatibility on Windows OS.
Otherwise: I need more explanations about that Error.
not yet
I get the error when trying to convert the file. Win7 here is in brazilian portuguese, I guess it's UTF-8 (or else, probably Windows-1251, which in turn is an ISO 8859-1 variant, I guess).
Just tried the new version... same issue, but it now shows where it stops: on a self-test SMS (explained below). It was enough to change the "phone number for comparison" field and _that_ issue was solved. However, please keep reading.
I found some "anomalies" in some messages in my file, though:
some are self-tests I sent to myself or just empty drafts. this seems to be the issue described before;
some contain the whole phone numbers including country codes and the plus sign (no trouble with those ones);
some archived messages contain line breaks: these are plain skipped;
duplicate messages, some within a short interval (3 secs or less) disappear also;
different cellphones use different text encodings so you guess the mess... however, overall text is more important than specific characters, so it's relevant to say I had no problem at all with these, apart from getting alien symbols (which don't bother me).
I had to abandon Android on my Kaiser to revamp it from scratch (therefore, WM again aawwww), so I can't test the final result now, but there's a Samsung Galaxy S (Froyo, I guess) coming in a few days. So if you'd wish to attack those issues in the meantime, I'll gladly test the final result when time comes.
Thank you again and keep up the good work.
Nice to have so detailed error description!!
New version was compiled just without "Compress executable" option because I thought your error were caused on startup and not during conversion.
Can you send me just a complete row (you can manually edit a row to create fake text) of CSM file with many brazilian characters??
Now I'll try with:
- self test messages
- many special characters (also line-breaks)
outgoing SMS is sucessfully converted,
but I cannot found any incoming message in the output files...
Here are the first few line of the output:
Code:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<smses count="196">
<sms protocol="0" address="" date="1284300650000" type="1" body="回到家了啦" read="1" status="-1" contact_name="" />
<sms protocol="0" address="" date="1286260959000" type="1" body="整緊" read="1" status="-1" contact_name="" />
@azothterry: TYPE="1" means "Inbox" but perhaps this wrong decode depends of strange Input data.
I've tested with my latinian-alphabet without special chars (comma, points and few single-quote chars) and it works.
To allow other alphabets/characters I need few lines from your CSM file, expecially with special chars.
Don't forget to set "Number for comparison" field with your partial (without international prefix) phone number.
Hi, emandt
Here are some line of my csm file, many thx.
Code:
0x00,0x00;"";"";;"";"回到家了啦";"";0;"\\%MDF1";"SMS";"IPM.SMStext";;;33;262144;2011,04,13,15,07,28;2010,09,12,22,10,50;1;"524296\;Kat\;99999999\;1\;0\;SMS";0;""
0x00,0x00;"Kain Kwok";"\"Kain Kwok\" <88888888>";;"";"幫我開電腦pls";"";0;"\\%MDF1";"SMS";"IPM.SMStext";;16;1;;2008,01,01,16,38,55;2010,09,22,09,29,45;0;"";0;""
0x00,0x00;"";"";;"";"整緊";"";0;"\\%MDF1";"SMS";"IPM.SMStext";;;1;262144;2008,01,01,16,38,56;2010,10,05,14,42,39;1;"524296\;Kat\;99999999\;1\;0\;SMS";0;""
0x00,0x00;"Kat";"\"Kat\" <99999999>";;"";"飲檸檬茶中..";"";0;"\\%MDF1";"SMS";"IPM.SMStext";;14;1;;2011,04,13,15,07,28;2010,10,05,14,46,55;0;"";0;""
0x00,0x00;"";"";;"";"飲緊燈汁!明天俾一支你!";"";0;"\\%MDF1";"SMS";"IPM.SMStext";;;33;262144;2011,04,13,15,07,28;2010,10,05,14,51,24;1;"524296\;Kat\;99999999\;1\;0\;SMS";0;""
0x00,0x00;"Kat";"\"Kat\" <99999999>";;"";"何時買?";"";0;"\\%MDF1";"SMS";"IPM.SMStext";;8;1;;2011,04,13,15,07,28;2010,10,05,14,52,55;0;"";0;""
0x00,0x00;"";"";;"";"今早";"";0;"\\%MDF1";"SMS";"IPM.SMStext";;;33;262144;2011,04,13,15,07,28;2010,10,05,14,53,23;1;"524296\;Kat\;99999999\;1\;0\;SMS";0;""

[MOD] Add multi-user support to Android 4.2 roms using device overlay (phone)

I dont know if this has already been posted, but I could not find anything that enabled multi-user support directly.
It is fairly simple to add multi-user support to your Android 4.2 rom using the device overlay.
To enable multi-user support you will have to add the following to your config.xml:
<integer name="config_multiuserMaximumUsers">8</integer>
This will enable the Users section in Settings to add/remove new users.
Additionally you will have to modify layout-port/keyguard_host_view.xml, because the layout-port version of keyguard_host_view.xml does not have the multi-user selector.
You will need to add the following to the layout:
<include layout="@layout/keyguard_multi_user_selector"/>
Instead of modifying the layout xml directly you can also just add a modified version of the .xml to your device overlay.
That will add the user selector to the keyguard/lockscreen.
The changes can be found here:
https://github.com/adrian-bl-hox-jb...mmit/ba74d22a7e88f73c0c639ed23aac8617cc9abc9f
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
In case there is just one user it will not show the user selector in the keyguard/lockscreen.
Known issues:
* The dialer only works in the main user and and trying to dial in any other user will result in a crash, because the dialer does not support multi-user yet.
Cool, thanks for sharing! (Although, I think having more users on an android device is kinda useless, but very nice that its possible)
This can be usefull when you have others Using your phone then you can set password for main acc and when others ask your phone they can open guest account or other...
this will get better...
Sent from my GT-S7500 using xda premium
broodplank1337 said:
Cool, thanks for sharing! (Although, I think having more users on an android device is kinda useless, but very nice that its possible)
Click to expand...
Click to collapse
I used to agree about it being useless for phones, but I also share a family gmail account and I like having that completely seperated from my own user so that I don't have calendars etc mixed in one user.
And in case you only have one user everything is the same as without the multiple user ability so it kinda made sense just adding it and let the user decide.
would someone do me a favor and attempt to make a phone call in a user profile that is not the main user, i added this in and i get fc when i attempt to make a call. just wondering what others are experiencing
Edit
So.I've had a few devs including myself add this to a quick build. All of us of different sources have the same issue and I would highly recommend not adding it because if someone had to dial out the phone FC when u press call
So imagine having to call 911. And you can't until your switch users... Probably not a good idea.
Its a great find. But that could cause some real problems
We have implemented this change in our AOSP build on the HTC One X without any issues.
If you could get me a logcat of the crash I can take a look, but I cant think it has to do with multi-user support as it is already baked into JB yet only 1 user is enabled by default.
Are you sure you have only added:
<integer name="config_multiuserMaximumUsers">8</integer>
to your config.xml and did not add anything else?
rogro82 said:
We have implemented this change in our AOSP build on the HTC One X without any issues.
If you could get me a logcat of the crash I can take a look, but I cant think it has to do with multi-user support as it is already baked into JB yet only 1 user is enabled by default.
Are you sure you have only added:
<integer name="config_multiuserMaximumUsers">8</integer>
to your config.xml and did not add anything else?
Click to expand...
Click to collapse
Correct. And that was the only thing I changed. Keep in mind yes its built into aosp but only for phones. No log cat cause as soon as I ran into that problem I didn't bother to continue and just abandoned the changes. I did add the changes to aosp as well as a custom source and both had the same result as did a few other devs I had try it.
No worry's tho.
runandhide05 said:
Correct. And that was the only thing I changed. Keep in mind yes its built into aosp but only for phones. No log cat cause as soon as I ran into that problem I didn't bother to continue and just abandoned the changes. I did add the changes to aosp as well as a custom source and both had the same result as did a few other devs I had try it.
No worry's tho.
Click to expand...
Click to collapse
K if you ever decide to give it another try and run into the same issue just post a logcat and ill be happy to look into it... as said we have this change applied in our aosp build and have no issues with calling or any other crash related to multi-user support
rogro82 said:
K if you ever decide to give it another try and run into the same issue just post a logcat and ill be happy to look into it... as said we have this change applied in our aosp build and have no issues with calling or any other crash related to multi-user support
Click to expand...
Click to collapse
OK I probably still have the zip laying around, I may through it on to.pull a log.
nvm i now know what you mean... trying to call with a user other then the device owner FCs... Ill see if that can be fixed
Just looking at Phone package source:
* Returns the singleton instance of the PhoneApp if running as the
* primary user, otherwise null.
So then it crashes because it has no PhoneGlobals for the non-primary user.
Most probably the Phone app does not support multi-users because it would register the broadcast receiver for handling calls multiple times... If this can be fixed easily I cant answer immediatly
rogro82 said:
nvm i now know what you mean... trying to call with a user other then the device owner FCs... Ill see if that can be fixed
Just looking at Phone package source:
* Returns the singleton instance of the PhoneApp if running as the
* primary user, otherwise null.
So then it crashes because it has no PhoneGlobals for the non-primary user.
Most probably the Phone app does not support multi-users because it would register the broadcast receiver for handling calls multiple times... If this can be fixed easily I cant answer immediatly
Click to expand...
Click to collapse
That's what I was talking about. You only have that problem on none main user and only when u make a call. Ie dial number and press call button.
Indeed... The phone app does check if its running on the first user:
Code:
if (UserHandle.myUserId() == 0) {
// We are running as the primary user, so should bring up the
// global phone state.
mPhoneGlobals = new PhoneGlobals(this);
mPhoneGlobals.onCreate();
}
But instead of throwing a nice message when opening the dialer it crashes when making a call...
If I have some time left Ill see if its possible to add multi-user support to the Phone package
Sorry if this is a dumb question, but could someone point me in the right direction as to where the config.xml file is?
mick3444 said:
Sorry if this is a dumb question, but could someone point me in the right direction as to where the config.xml file is?
Click to expand...
Click to collapse
^^
Would like to know this as well. I have a 2 year old that would greatly benefit from this. If she can do nothing other than use the apps I install, this would be awesome.
config.xml is not something you can edit on your phone.
Its an overlay file that has to be edited when building a custom android 4.2 rom.
Thanks man for letting us all know
Reply removed
is there a way to add this using just the rom's zip ??
Is it possible that this bit of code in system/core/include/private/android_filesystem_config.h might have something to do with it....?
Code:
#define android_id_count \
(sizeof(android_ids) / sizeof(android_ids[0])) ###EDIT: oops, I had it changed to 10 to see what would happen.
struct fs_path_config {
unsigned mode;
unsigned uid;
unsigned gid;
const char *prefix;
Edit: Now that I am looking at it, it may just be the creation of an empy array that will get populated later, I may be wrong though, I am just learning C, kinda becoming a Jack-of-all-Trades-Master-of-Puppets.
it also states this closer to the top...
Code:
/* This is the master Users and Groups config for the platform.
** DO NOT EVER RENUMBER.
*/
#define AID_ROOT 0 /* traditional unix root user */
#define AID_SYSTEM 1000 /* system server */
I believe these setting get baked into the ramdisk during a build, a few lines here also cause new unkown files and folders to be created as 0644 root root I believe and results in them not being executable.
I think I am going to have to edit this file quite a bit, I am trying to get glibc based services to start, some do like apache2 and rpcbind, the nfs-common is giving me trouble as well as postgresql, pgsql complains about not being able to open a listening socket, permission denied, so I added a postgres user to this file and some folder and file permissions for it,
Code:
# ./postgresql start -p 5432
# ./postgresql status
Running clusters:
#pg_lsclusters
Version Cluster Port Status Owner Data directory Log file
9.1 main 5432 down postgres /var/lib/postgresql/9.1/main /var/log/postgresql/postgresql-9.1-main.log
[email protected]:/root$ createuser msf_user -P
could not change directory to "/root"
Enter password for new role:
Enter it again:
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
createuser: could not connect to database postgres: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
[email protected]:/root$ createdb --owner=msf_user msf_database
could not change directory to "/root"
createdb: could not connect to database postgres: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
Been trying for a while to get this to work but I think I need to create a bridge for Androids User, UID, GID , stuff with Debian's whole /etc/passwd /etc/shadow scheme, one that allows both lists to become synchronized adding to eachother what was missing and preventing user creating with identical uid's. I wonder what init's uid is, cuz I think daemon's is set to 1 in /etc/passwd . Not sure.
It would be greate if we had user authentication to use commands like su or even port over sudo for one shot su service of a command like 'cp'.

Tool to extract Samsung Motion Photos to plain jpg and mp4

First off, I've been browsing here for some time, but I've just registered so I'm sorry if I'm breaking any etiquette or conventions on posting.
I ran across goofwear's tool to extract videos and photos from Samsung Motion Photos and thought it was useful. But I really wanted something that I'd be able to throw a whole album of motion photos at, rather than doing one at a time with this or the share app. I looked at the .bat file they used and implemented the same technique in C, so it could quickly process many photos. It's written with some direct Win32 API calls, so it's pretty much Windows only though making a cross platform command line version without the open dialog would be trivial. It is a simple program though, so it should work fine on Linux or Mac through Wine.
Here's the exe.
See the main page of that Github repository for more complete instructions and full source.
How to use:
1. Copy your Motion Photos off your Samsung phone, to your PC. Just copy them out of the DCIM folder.
2. Run the program. An "open" dialog appears. Apart from that there's no GUI on this program.
3. Browse to your photos and select them. Hold ctrl to select more than one, or shift to select a range. Or, ctrl+A to select all in a folder.
4. Click Open.
5. Wait. Depending how many you selected, it might take a little bit. When it's done, a message box will appear.
6. You should see *_photo.jpg and *_video.mp4 files next to the originals in the source directory. Note that this program does not modify the original files. It doesn't even open them with write permissions enabled.
Alternately, drag one or more photos from Windows Explorer onto the exe's icon instead of using the open dialog.
Screenshots:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Version History:
1.0: Initial release
1.1: Added optional compile-time option to delete the original file after extracting
2.0: Refactored a bit, added a proper build system, and multilanguage support; moved to a 'real' Github repo
2.1: It now preserves timestamps when making the extracted files, and now supports a -r flag to rename the original file instead of appending _photo and _video to the extracted ones.
Andylain has written a Chinese language explanation of the usage of this program, and kindly translated the UI to Chinese (Traditional). To use it in Chinese, either have your Windows set to Chinese language, or rename the exe to put _zh at the end of the name. To use it in English on a Chinese Windows, put _en at the end of the name.
If for some reason you want the old version exe, the old "delete-original" exe, or the old source code, you can still have them.
Can you help to make a version that delete the source after successfully exact?
@Andylain Here's one that deletes the original file after splitting it into photo and video.
Oops -- turns out it was smaller because I forgot to include the icon last time. I've updated the link now and it points at a new build that has an icon.
This is super helpful, Thank you! Oh, there is no beautiful icon in this version.
BTW, I am a Chinese blogger live in Taiwan, I blogged this tool and made a Chinese user guide in my blog "andylain‧blogspot‧com/2017/07/SamsungMotionPictureExtractor.html" .
(Sorry, I am a new user and not allowed to post link.)
If you think that's not a great idea, please tell me and I'll delete my post.
@Andylain Thanks for linking me to your post, and thanks for writing a Chinese explanation for how to use it. I'm happy for people to use my program if they find it useful.
Would a proper Chinese language version of the program be helpful, or are most people there able to read enough English to understand the few error and status messages the program has?
@Andylain Please update your link to the "delete original" version to this one. I forgot to include the icon when building it yesterday.
Chupi383 said:
@Andylain Thanks for linking me to your post, and thanks for writing a Chinese explanation for how to use it. I'm happy for people to use my program if they find it useful.
Would a proper Chinese language version of the program be helpful, or are most people there able to read enough English to understand the few error and status messages the program has?
Click to expand...
Click to collapse
I think it's not hard to understand the status messages
However, a proper Chinese language version of the program would be much more helpful for girls and elderly since Samsung sell a lot of pink S8/S7 for this target.
I really love this app (super helpful for me) and I am happy to translate it , but I don't know how to code BTW. :silly: (just a blogger/photographer)
---------- Post added at 12:55 PM ---------- Previous post was at 12:47 PM ----------
Chupi383 said:
@Andylain Please update your link to the "delete original" version to this one. I forgot to include the icon when building it yesterday.
Click to expand...
Click to collapse
Thank you for the update. I update the link to my blog and facebook fanpage
@Andylain I've extracted all the user-facing strings from my code. The text in [square brackets] are comments giving some context for the message that follows, and don't appear anywhere in the program.
Code:
=====
[this message is shown in a dialog box if you click cancel on the open photos dialog]
You can use this program 3 different ways:
GUI USE: Just run it. You'll get an file-open dialog where you can open .jpg files. Use ctrl or shift or drag to select more than one.
DRAG & DROP USE: Drag one or more motion photos onto the icon for this exe.
COMMAND LINE USE: Run this program with one or more motion photo file names as arguments. Remember to use "quotes" if there are spaces in the names.
Any way you run it, the original files will not be modified. The extracted photo and video will be stored in *_photo.jpg and *_video.mp4 where * is the name of the original file, minus the .jpg extension.
Coded by Chupi383. All credit for the method goes to goofwear at the XDA forums. I've just ported their .bat file to plain C and Win32.
=====
[this is the title of the program]
Samsung Motion Photo Batch Extractor
=====
[this is displayed in the open dialog, under the box where you can type a filename, in a drop-down list]
Motion Photos (*.jpg)
All Files (*.*)
=====
[this is the title bar of the open dialog]
Open some Samsung Motion Photos
=====
[this message is shown if the user selected a file with a really really long name]
Skipping too-long path: <filename goes here>
=====
[title bar for error dialogs]
Error
=====
[error if the user selects over the maximum number of files (currently 10000)]
You've selected too many files. I can only do up to 10000 at a time.
=====
[error if the user selects so many files the Windows "open" dialog box gives up]
You've selected too many files. Try selecting fewer files and process them in bunches.
=====
[appended to names of extracted files - not sure if these should be translated]
_photo
_video
=====
[error if enough memory couldn't be allocated, possibly because the computer is out of RAM]
Can't allocate RAM to read <number> bytes from <filename>
=====
[error if a file can't be read for some reason, perhaps a damaged disk]
Skipping due to read error:
<filename>
=====
[error if an output file can't be written, generally because of full disk, read only disk, file exists and is read only, or permissions on the folder]
Can't write to <filename>
=====
[message on completion]
Finished extracting Motion Photos
Photos extracted: <number>
Videos extracted: <number>
=====
[added to the end of the previous success message if some files didn't contain a photo and a video]
<number> files were skipped because they weren't Motion Photos
=====
[title bar of completion message if at least 1 file was processed successfully]
Success
=====
[title bar of completion message if nothing was done successfully]
Failure
=====
["description" shown in right-click->properties dialog for the exe file]
Extract Samsung Motion Photos to jpg and mp4
=====
["product name" shown in properties dialog for the exe file]
Motion Photo Batch Extractor Utility
If you translate these for me, I'll put them back into my program to make either a Chinese or multi-language version.
Here is the translation of Chinese, sorry for the delay of this reply.
BTW, maybe a dialog for user to choose whether delete original files would be a great idea?
Code:
=====
[this message is shown in a dialog box if you click cancel on the open photos dialog]
有三種方式可以使用本軟體:
一:點開軟體後選擇你要轉存的照片,你可以使用Ctrl或是Shift來多選檔案。
二:把你要的照片拖移到本軟體的icon上也能轉存!
三:你也能使用Command Line來處理喔! (記得用”quotes”取代空格)
請放心:無論你怎麼做,原始檔案都不會被修改。轉存成功的檔案將會存在原始檔案位置,並新增為 *_photo.jpg 和 *_video.mp4。
GUI軟體由Chupi383撰寫,軟體內核由XDA forums的goofwear撰寫,Andylain翻譯正體中文,詳細中文使用教學請上「安迪連碎碎念」。
=====
[this is the title of the program]
三星動態相片批次轉存工具
=====
[this is displayed in the open dialog, under the box where you can type a filename, in a drop-down list]
動態相片 (*.jpg)
所有檔案 (*.*)
=====
[this is the title bar of the open dialog]
開啟一些動態相片
=====
[this message is shown if the user selected a file with a really really long name]
已忽略太長的路徑:<filename goes here>
=====
[title bar for error dialogs]
發生錯誤
=====
[error if the user selects over the maximum number of files (currently 10000)]
你一次選太多檔案了。我一次只能處理一萬個檔案。
=====
[error if the user selects so many files the Windows "open" dialog box gives up]
你一次選太多檔案了。嘗試選少一點檔案吧!
=====
[appended to names of extracted files - not sure if these should be translated ]
_photo
_video
=====
[error if enough memory couldn't be allocated, possibly because the computer is out of RAM]
記憶體定位錯誤,無法讀取 <number> bytes 上的 <filename> 檔案,有可能電腦的RAM不足。
=====
[error if a file can't be read for some reason, perhaps a damaged disk]
由於讀取錯誤,已跳過處理:
<filename>
=====
[error if an output file can't be written, generally because of full disk, read only disk, file exists and is read only, or permissions on the folder]
無法寫入 <filename> 可能目的地已滿或是為唯讀。
=====
[message on completion]
動態相片轉存結果:
有 <number> 張照片輸出成功!
有 <number> 個影片輸出成功!
=====
[added to the end of the previous success message if some files didn't contain a photo and a video]
<number> 個檔案被跳過了,因為它們不是三星動態相片。
=====
[title bar of completion message if at least 1 file was processed successfully]
轉存成功
=====
[title bar of completion message if nothing was done successfully]
轉存失敗
=====
["description" shown in right-click->properties dialog for the exe file]
批次把三星動態相片轉存成JPG照片和MP4影片!
=====
["product name" shown in properties dialog for the exe file]
動態相片轉存工具
[/CODE]
I'm sorry I'm being slow on this. My work has been especially busy lately. This thread isn't forgotten -- I'll make the translated app once I'm over this hump in workload.
Chupi383 said:
I'm sorry I'm being slow on this. My work has been especially busy lately. This thread isn't forgotten -- I'll make the translated app once I'm over this hump in workload.
Click to expand...
Click to collapse
That is very nice of you to do this!
Take your time and I am willing to help!
@Andylain Thank you for the translation! I've finally got a working bilingual exe -- see the original post. Sorry it took a while.
The "delete original" feature is now built into the main exe. You use the /d command line option to activate it. To make a drag-and-drop icon that will delete the original, right-drag it and create shortcut. Then right click the shortcut, go to properties, shortcut tab, and add a space and /d to the end of the target, after the closing quote.
BTW, if you could, please link people to "https://github.com/joemck/ExtractMotionPhotos/releases/latest" to get the exe -- that's a special link that will always go to the latest version I've posted there.
Coming up, I'd like to add an option to add/remove Explorer context menu integration.
This is absolutely amazing. Thank you so much!!
Chupi383 said:
First off, I've been browsing here for some time, but I've just registered so I'm sorry if I'm breaking any etiquette or conventions on posting.
I ran across goofwear's tool to extract videos and photos from Samsung Motion Photos and thought it was useful. But I really wanted something that I'd be able to throw a whole album of motion photos at, rather than doing one at a time with this or the share app. I looked at the .bat file they used and implemented the same technique in C, so it could quickly process many photos. It's written with some direct Win32 API calls, so it's pretty much Windows only though making a cross platform command line version without the open dialog would be trivial. It is a simple program though, so it should work fine on Linux or Mac through Wine.
Here's the exe.
See the main page of that Github repository for more complete instructions and full source.
How to use:
1. Copy your Motion Photos off your Samsung phone, to your PC. Just copy them out of the DCIM folder.
2. Run the program. An "open" dialog appears. Apart from that there's no GUI on this program.
3. Browse to your photos and select them. Hold ctrl to select more than one, or shift to select a range. Or, ctrl+A to select all in a folder.
4. Click Open.
5. Wait. Depending how many you selected, it might take a little bit. When it's done, a message box will appear.
6. You should see *_photo.jpg and *_video.mp4 files next to the originals in the source directory. Note that this program does not modify the original files. It doesn't even open them with write permissions enabled.
Alternately, drag one or more photos from Windows Explorer onto the exe's icon instead of using the open dialog.
Screenshots:
Version History:
1.0: Initial release
1.1: Added optional compile-time option to delete the original file after extracting
2.0: Refactored a bit, added a proper build system, and multilanguage support; moved to a 'real' Github repo
Andylain has written a Chinese language explanation of the usage of this program, and kindly translated the UI to Chinese (Traditional). To use it in Chinese, either have your Windows set to Chinese language, or rename the exe to put _zh at the end of the name. To use it in English on a Chinese Windows, put _en at the end of the name.
If for some reason you want the old version exe, the old "delete-original" exe, or the old source code, you can still have them.
Click to expand...
Click to collapse
Thanks
Just wanted to add my thanks for this fantastic tool.
I can't quite believe there's no official Samsung Motion Photo viewer (The Windows app doesn't appear to play Motion Photos). And there's practically no 3rd party support around for what you would think would be in high demand.
So I registered on XDA to show my appreciation. Thanks again.
Chupi383 said:
It's written with some direct Win32 API calls, so it's pretty much Windows only though making a cross platform command line version without the open dialog would be trivial. It is a simple program though, so it should work fine on Linux or Mac through Wine.
Click to expand...
Click to collapse
I also wanted to say thanks! That program is a wish-come-true! I wanted to create some script to batch-process JPG's and extract videos but that .exe is even better.
I have just one suggestion. Would you be able to modify program to set video's
Windows date modified
and maybe even date taken (EXIF) attributes
values to correct date, not current date when the extraction takes place?
It would help a lot, because Gallery apps or cloud services like Google Photos shows videos sorted / grouped by the date attribute which is different thandate of photo (when you extract old photos from last couple of months you will have a mess).
For now only way is to use some bulk date changer software to fix that - changing dates based on filename pattern, but it would be a nice feature for your exe. Do you think it's doable?
And yes. I created my XDA account just to say thank you for your great program!
Thanks a lot for this tool, Chupi383!
I'd like to "vote" for konieckropka's suggestion as well. Having the corrent timestamps on the extracted images and videos would be important for a correct file management.
The tool basically needs to read the original "modified timestamp" and set it to the created files (same for "created timestamp").
Could this please be added?
Fair point. I'll add it in a bit when I have the time.
Sorry for the delay, guys. I've added timestamp preservation and a -r flag to rename the original instead of adding _photo and _video. You can use -dr to delete the original and don't append _photo or _video to the extracted files.
This is super helpful, Thank you!
Chupi383 said:
Sorry for the delay, guys. I've added timestamp preservation and a -r flag to rename the original instead of adding _photo and _video. You can use -dr to delete the original and don't append _photo or _video to the extracted files.
Click to expand...
Click to collapse
Works perfectly now! THANKS A LOT!!

Share exercise data from the Huawei Health app

Huawei TCX Converter
A makeshift python tool that enables the extraction of TCX files from the Huawei Health app. Your phone must be a Huawei Phone or Rooted to access Huawei Health app data!
Introduction
Users of Huawei Watches/Bands sync their fitness data with the Huawei Health App. It is notoriously difficult to get the data out of this app, but through some cunning you can find HiTrack files which seem to contain some run data. This program allows you to take these files and generate .TCX files for use in your tracking app of choice (e.g. Strava). The outputted .TCX files will contain timestamped GPS, altitude, heart-rate, and cadence data where available.
Accessing the App Data
The Huawei Health app generates a 'HiTrack' file when it displays the trajectory of an particular exercise event. We can access these as follows:
Rooted phones
Navigate to data/data/com.huawei.health/files/
Copy the HiTrack files to your computer
Unrooted Huawei phones
Download the Huawei Backup App onto your phone.
Start a new unencrypted backup of the Huawei Health app data to your external storage (SD Card)
Navigate to Huawei/Backup/***/backupFiles/***/ and copy com.huawei.health.tar to your computer
Unzip the file and navigate to com.huawei.health/files/ and you should should see a number of HiTrack files
Using the Huawei TCX Converter
You need python 3 to use this tool.
Download the Huawei TCX Converter and save it as a Python script in the same folder as your HiTrack file.
The tool is run on the command line by passing it the name of your file as a command line argument. Other command line arguments:
-v - validate the final TCX file in order to check that the conversion has worked (requires xmlschema and an internet connection to download the TCX schema to check against)
-f - attempt to filter out any records in which GPS signal was lost, or cadence/heart-rate/altitude are invalid
-b - change sport to Biking
You can rename your HiTrack files if you wish, but for clarity in the examples below I leave mine exactly as I found it.
Illustration
I have copied the Huawei-TCX-Converter.py file to the directory containing my HiTrack file (HiTrack_1551732120000155173259000030001). Now I can run the tool as follows:
Code:
python Huawei-TCX-Converter.py HiTrack_1551732120000155173259000030001 -f -v
This gives me the output:
Code:
---- Input File ----
reading: OKAY
filtering: OKAY
processing gps: OKAY
processing heart-rate/cadence: OKAY
---- Details ----
sport: Running
start: 2019-03-04 20:42:00
duration: 00:07:49
distance: 1700m
---- XML file ----
generating: OKAY
saving: OKAY
validating: OKAY
Here are both the HiTrack file and the resultant TCX file for you to have a go with.
Next steps
The files are now ready (e.g. for upload to Strava). Some users have recommended the TCX Converter tool to add altitude data to your TCX files once they've been converted. This may overwrite altitude data extracted from your device, if it collects this.
Comparison
This is an image of the GPS trace from the .tcx file. The command line output above also lists the start time as 2019-03-04 20:42:00, the distance as 1.70km, and the duration as 00:07:49.
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
For comparison, below is the data visable on the Huawei Health App. You can see that the distance is off by about 80m, and the duration off by 1 second, but the GPS trace is spot on.
Contributing
Go to the Github Hompage of this tool to contribute.
This is a very early alpha version of this tool, so please help me by making it better! There are some scripts in the Development Tools folder that I find useful for debugging. I'll accept any improvements, but if you're looking for inspiration you could start with this to-do list:
Remove reliance on using the original filename
Enable changing sport type from running (default) to biking
Read timestamped heart-rate, cadence, and altitude data where available
See if we really need to add the unused data elements (e.g. Calories) to the TCX (edit: we do as there is no minOccurs in the schema)
Check that this works for files other than those generated using the Huawei Band 2 Pro:
Confirmed working on a file from a Huawei Watch GT
Improve the distance measurement method (currently using Viscenty's Formulae)
Try and work out what tp=b-p-m is
Add interpolated heart-rate/pace/average speed data to each location element
Work on splitting data into Laps/Tracks rather than shoving it all into one
Try to call on an open API to get altitude data for location points that don't have it
Inspect other files in com.huawei.health to see if we can get any more relevant data out of them
XDA:DevDB Information
Huawei TCX Converter, Tool/Utility for the Smart Watches
Contributors
aricooperdavis
Source Code: https://github.com/aricooperdavis/Huawei-TCX-Converter
Version Information
Status: Testing
Created 2019-03-11
Last Updated 2019-03-11
Thanks for sharing man! I can't work out if I have a use for this, because I'm already using google fit and strava. But I would like to be able to extract sleep history from Huawei Health. Is that something you would plan to look at? I guess step data and continuous heart rate would be good too. I don't like being locked into an app with no cloud backup/access.
mrlb said:
I would like to be able to extract sleep history from Huawei Health.
Click to expand...
Click to collapse
So far I haven't found anything resembling sleep data in those HITRACK files - I think sleep data must be held elsewhere. I will keep poking around, but at the moment it's probably not at the forefront of my efforts as the other databases are encrypted so I cannot access them to read info. I'll still add it to the todo list though!
Dears, Thx for the type but i'm locked in step with the tar files. I've backuped it with Hisuite on my computer (not SD 'cause i didn't have it - bad version of P20).
But i can't extract the TAR files, it's seems it's corrupt. I've already tried to save the output TAR to different folders on my computer, on my local network etc.. but same issue. TAR is corrupte.
Did you have any idea ?
The best!!!
it works perfectly, Thanks!!!!!
works great... everything is great... only off by several number but overall satisfied...
also i have the schema file "TrainingCenterDatabasev2.xsd"... where should i put it? or this should be done automatically? thanks...
It worked very well !! How to implement more things in this great code? for example the sport swimming I tried most does not convert to .tcx so it is not possible to import to strava. how to import racing data about time and cadence in every 1km race? Thanks for what we already have works very well
negbd said:
Dears, Thx for the type but i'm locked in step with the tar files. I've backuped it with Hisuite on my computer (not SD 'cause i didn't have it - bad version of P20).
But i can't extract the TAR files, it's seems it's corrupt. I've already tried to save the output TAR to different folders on my computer, on my local network etc.. but same issue. TAR is corrupte.
Did you have any idea ?
Click to expand...
Click to collapse
Hi
maybe somehow crypted TAR ?
Thanks for making this it's really useful, shame the GT watch GPS is not very accurate and/or low sampling rate. The same run/cycle etc recorded on other devices is far more accurate and detailed. A 30 mile bike ride was 1.5 miles less on the Huawei watch! (Nothing you can do about that as it's the same in health app and after exporting to strava sadly)
It is working
Hi all,
I have created a petition asking Huawei to add export and sync to Strava. Please sign if you agree.
https://ipetitions.com/petition/huawei-please-add-gpxtcx-export-and-sync-to
Thanks
Signed
I was trying to create a backup using the HiSuite and the Backup and Restore app but the Heath App does not show up in the app list, anymore.
Can someone else confirm this?
Hello,
I'm planning to buy huawei smartband, but i want to export heart rate to google fit / garmin app...etc
Heart rate about the day, not about an activity.
With this is possible?
Hi sir/mam, im having issue running the latest version 2.3... im still using the old version with -v -b arguments... it is working with me but not the newest version 2.3... here are my batch file and error result... and how to use XML validation... i already downloaded the XSD file... but still nothing... then how to use PIP INSTALL XMLSCHEMAS... thanks...
----------------------------
batch file
---------------------------- @Echo off
echo.
"C:\Users\*******\AppData\Local\Programs\Python\Python37\python.exe" Huawei-TCX-Converter.py --file %1 --sport Cycle
echo.
pause
----------------------------
error output
----------------------------
Info - External library xmlschema could not be imported.
It is required when using the --validate_xml argument.
It can be installed using: pip install xmlschema
Traceback (most recent call last):
File "Huawei-TCX-Converter.py", line 926, in <module>
class TcxActivity:
File "Huawei-TCX-Converter.py", line 944, in TcxActivity
filename_prefix: str = None):
NameError: name 'xmlschema' is not defined
python Huawei-TCX-Converter.py --file HiTrack_1569078600000156908002700030001
File "Huawei-TCX-Converter.py", line 54
def __init__(self, activity_id: str, activity_type: str = TYPE_UNKNOWN):
^
SyntaxError: invalid syntax
I get this error if anyone can help me
python Huawei-TCX-Converter.py -f HiTrack_1551732120000155173259000030001 - this syntax works for me in newer version of python + dont forget to install schema = pip install xmlschema = search for youtube video called PIP INSTALL COMMAND IN PYTHON 3.6 ( i cannot post links as new user so sorry for that)
BUT
i also have honor band 4 running edition with tracking angles, forces etc. When i create files from those records - data are not here becouse they are not defined to translate in python program. can somebody help me with providing sources from garmin etc so i will try to add it by myself if nobody is interested to do this ?
the file from HB 4 running edition consists of those records : tp=rp;k=5;gct=532;gia=12;sa=65;ee=15;fsp=0;wsp=1;hsp=1;
can somebody help me to translate this?
from my own research so far -
1. ground contact time = GCT
2. Landing impact = gia
3. eversion excursion = ee
4. swing angle = sa
5. forefoot strike pattern = fsp
6. W? midfoot strike pattern = wsp
7. Heel strike pattern = hsp
How those things should be written in tcx files?
not work
Hello
I don'know python, I just launch the IDLE program from windows menu, I copied the script in the same hitrack folder and I type in the python shell the command
python Huawei-TCX-Converter --file HiTrack_myfilename
It shows syntax error and higlight in red the command "huawei"
Can you explain easily how to proceed? Is there a rule where put the folder?
Thanks
avvocato.rossi said:
Hello
I don'know python, I just launch the IDLE program from windows menu, I copied the script in the same hitrack folder and I type in the python shell the command
python Huawei-TCX-Converter --file HiTrack_myfilename
It shows syntax error and higlight in red the command "huawei"
Can you explain easily how to proceed? Is there a rule where put the folder?
Thanks
Click to expand...
Click to collapse
just read my previous post
syntax python Huawei-TCX-Converter.py -f HiTrack_1551732120000155173259000030001 works
regarding Distance Calculation (haversine instead of viscenty)y)
@aricooperdavis
Checked another calculation for distance between coordinates (haversine) but the results were the same (in your example: 1700.43m for Viscenty, 1699.3m for Haversine). I really do not know which is the algorithm used in HUAWEI Health (80 meters difference)
FYI, code used:
def _haversine(self, point1: tuple, point2: tuple) -> float:
R = 6378137
Phi1 = math.radians(point1[0])
Phi2 = math.radians(point2[0])
dPhi = math.radians(point2[0]-point1[0])
dLamda = math.radians(point2[1]-point1[1])
a = math.sin( dPhi/2 ) * math.sin(dPhi/2) + math.cos(Phi1) * math.cos (Phi2) * math.sin (dLamda/2)* math.sin(dLamda/2)
c = 2 * math.atan2(math.sqrt(a), math.sqrt(1-a))
d = R * c
return round (d,6)
https://www.movable-type.co.uk/scripts/latlong.html

[TOOL] ADB-Overlay [2.2.2.0 - .Net 6]

Heyho together,
after my P9-Lite and P10-Lite toolkit i thought, it's time to build a more generic version. Here it is, the ADB-Overlay!
The main point of this project is to serve a GUI for ADB. Currently, there is a File-Explorer, Remote-Desktop, Shell interface and APK installer implemented. You can also READ the contacts if your device is rooted and has sqlite3 installed. But a picture tells more as 1000 words... So here is a preview of what you'll get.
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
But anyways, i'm not responsible for any damage done to your device! For example, if you delete some files/folders on root lvl etc.
Component Info
Remote-Desktop:
Left-Click = Touch
Right-Click = Swipe with duration
The keyboard is nearly fully supported, i have written a kind of WPF -> Android key-mapper. So even combos like SHIFT+A-Z, SHIFT+0-9, ALT+A-Z and ALT+0-9 should work. The base for the key-mapping is a 102 keys keyboard with en-GB or de-DE layout. If you have another setup, some keys may on other positions.
The screenshots will be created under "ADB-Overlay\Screenshots\Screenshot.yyyy-MM-dd_HHmmss.(bmp | gif | jpg | png | tiff | wmp)".
-
If the device is booted in the recovery, the Remote-Desktop is only a viewer, because the recoveries doesn't support "input tap x y" nor "input keyevent XXX".
Shell:
The input box supports CTRL-A-Z, so you'll have the ability to send for example CTRL+C to stop a remote process. If you want use Copy & Paste onto the input box, use the Right-Click menu.
Tested OS
Win 7 | 8 | 8.1 | 10 | 11 (32Bit/64Bit in VM-Ware)
Win 7 | 8 | 8.1 | 10 | 11 (64Bit Native)
Tested Devices
Android Emulator some Versions (min. 2.x) in AVD
Android x86
HTC Sensation -/ XE (non-/rooted)
HTC One M9 (non-/rooted)
Huawei P9 Lite (VNS-L21, 22, 23, 31, etc.) (non-/rooted)
Huawei P10 Lite (WAS-LX1A, etc.) (non-/rooted)
Huawei Mate 9 (THX to @Tecalote)
Huawei Mate 10 Lite (THX to @Chisetdel31260)
Huawei P9 (EVA-al10) (THX to @reynard1)
Sony Xperia X (THX to @FoxTheLegend)
Pixel 4 (THX to @squabbi)
Requirements
Android: min. 2.x
Platform: x86/x64 (Windows)
Frameworks: min. .NET 6 / .NET 6 Desktop Runtime x86/x64
(Installed ADB/Fastboot driver)
Download
Mirror: See attachments
Mirror #1: My FTP [USR/PW=ADB-Overlay]
Mirror #2: GoogleDrive
Mirror #3: Dropbox
Mirror #4: Mega
DO NOT MIRROR MY FILES! DO NOT COPY MY THREADS!
Bug-Tracker
If you can't use the SDK-Updater or the Version is 0.0, just close the ADB-Overlay delete the "platform-tools" directory and restart the ADB-Overlay.
If the device won't connect via W-/Lan, check which version of android you are running... the latest version "SP2A.220505.002, May 2022" seems to break "Developer settings -> USB-Debugging -> Debug over W-/Lan"... To get it working anyways, just open a cmd prompt in the "platform-tools" folder, connect your device via USB and execute the following command: "adb tcpip 12345" (or some other port). After that, you should be able to connect your device via W-/Lan.
App Freeze
If the ADB-Overlay freezes during startup or by connecting a rooted device, the solution is to update the su binary. I encountered this problem yesterday on an older device running Android N. After an update to Magisk Canary [build 21005] the problem was solved.
Changelog
DD.MM.YYYY | (A) = Added | (C) = Changed | (D) = Deleted | (F) = Fixed | (R) = Recoded | (U) Updated
----------------------------------------------------------------------------------------------------------------------------------------------------
30.04.2022 [2.2.2.0]
(F) The SDK updater.
27.04.2022 [2.2.1.0]
(F) A freeze which occured on some FTP-Servers which doesn't implement RFC 959 properly.
11.04.2022 [2.2.0.0]
(U) General improvements in terms of speed and connectivity.
(U) The FTP config is now AES-256 encrypted for better security.
29.11.2021 [2.1.0.0]
(U) To .Net 6
(U) General improvements in terms of speed and connectivity.
25.07.2021 [2.0.2.0]
(A) ADB-Sideload
(U) ADB and Fastboot binaries.
(F) Some transfer issues (Binary <-> Socket)
(F) The platform-tools updater.
12.01.2021 [2.0.1.0]
(F) All freezes on the Tree-/ListView.
(A) ColumnHeader sorting on the Explorer and Apk-Manager ListView.
(A) Sort options for all header not only Name, Size, Date and Type.
(C) Sorting happens now in the background (So no more freezes here too.).
.-Older changes-.
12.12.2020 [2.0.0.0 - .Net 5]
Switched to .Net 5.0
(F) FTP-Updater timeout issue
(C) Brotli compression to .Net native
17.09.2020 [1.18.46.0]
(A) sendrecv_v2 for Android 11
(A) Brotli compression for file transfers on Android 11
29.03.2020 [1.17.46.0]
(A) Cut (via Context-Menu and "Ctrl+X")
(A) Copy (by default and via Drag'n'Drop by holding "Ctrl" during drop)
(A) Move (via Drag'n'Drop by holding "Shift" during drop)
(NOTE: Move is now enabled for on-device, device-to-device, local-to-device and device-to-local transfers.)
(C) The copy window, it will now display "Copy" or "Move" depending on the current operation.
16.03.2020 [1.16.46.2]
(F) The updater buttons, now they are also disabled during an download/check.
15.03.2020 [1.16.46.1]
(F) File/Folder interaction with those which contains "\s _ - ' , * & ~ | < > ( ) [ ] { }" in their names.
07.03.2020 [1.16.46.0]
(C) The synchronous IO to fully asynchronous IO.
(A) The Edit-Window, this will temporary download the file and open it locally in an application defined for this file type or with the "OpenAs" dialog.
(C) The UI, buttons which can't be used are now "grayed out".
12.02.2020 [1.15.46.1]
(F) The re-connection bug on the FTP-View. (Which also caused the updater to fail.)
(F) The (2 sec) freezes after copy/delete/tar.
(C) The info bar, added the modify date.
31.01.2020 [1.14.46.0]
(F/A) The timestamps for access, changed, modify.
(C) The "Properties Window", added the mentioned fields and resized the height a bit.
(A) Create File on the FTP-View.
30.12.2019 [1.13.46.0]
(F) The FTP TLS/SSL problem, now all procedures (implicit/explicit) should work without problems. (I tested this the last days with multiple servers, also the proxy's socks4/a|5 should now work with TLS/SSL.)
(U) All 3 explorers, they relay now on an shared generic base explorer which implements most of the features for all 3 views. So it's guaranteed that all views will behave the same.
(U) All 3 explorer views, changed the spacing's and the "edit textbox" (on rename) a bit, so that they look a bit more like the default explorer.
(A) IComparable<T> and IEquatable<T> to all List-/TreeViewItems so you get a pre-sort during item parsing. (I thought it would work a bit nicer, but hey, now it's implemented^^)
(R) Optimized the item (file/folder) parser for both Android & FTP.
18.12.2019 [1.12.46.1]
(F) The broken SDK-Updater, where you saw in the log file a "BindingException".
(F) The "SocketException" on app close. Reason for this was, that i disposed the "DeviceMonitor" after i killed the adb-server, but the monitor tried to check in some cases (10 sec refresh rate) for changes, after the server was already down.
(A) The "remount" option for mounts to the properties window. (You'll get also a little warning, each time you attempt to remount a mount point.)
(C) Resized the properties and the updater windows a bit.
17.12.2019 [1.11.46.0]
(F) The remote desktop for 16-Bit devices.
(R) Root detection
(R) Mount detection (added support for Android 2.x)
(R) The properties view, as mentioned, there is now a more valuable overview.
14.12.2019 [1.10.46.0]
(A) A version banner to the title bar.
(R) Nearly the whole caching logic inside the local ,Android and FTP explorer.
(R) The mount ([Device]) overview, now you'll see all mounts returned from "mount" and the assigned "df" data, if available. (The next build will include a more valuable overview in the PropertiesWindow. Like the mount options etc.)
(R) The remote desktop, i moved the "color correction" inside the pixel-buffer copy process. This will save a lot of time and boost the FPS in my TWRP up to 80++ per sec.. (That was so much, that .Net even couldn't dispose the sockets so fast as i requested a new one... This ended in an waiting queue overflow... So i decided to limit the FPS to 30-40 this is enough to have a clean view.) - Also NOTE: BOOTED IN ANDROID, WILL DECREASE THE FPS TO 2-3 DEPENDING ON THE RESOLUTION OF YOUR DEVICE! THE ONLY SOLUTION FOR THIS IS, START ADB WITH ROOT RIGHTS. (I added a internal switch, which will detect if adb runs as root, if so, i don't relay on the frame-buffer-service of adb. Instead, i use the bare metal (/sys/class/graphics/fb0/) to get the correct buffer values and then i read directly from "/dev/graphics/fb0".) AGAIN, NOTE: THIS WILL NOT RAISE THE FPS UP TO 80++, BUT THE FPS WILL INCREASE UP TO 15-25.
11.12.2019 [1.9.46.1] (HotFix)
(A) The mistakenly removed overwrite protection on item rename. (Android)
(R) The Copy & Delete view, the media-scanner, if activated, will now only run once at the end of an copy or delete action.
(R) Sym-/Directory/File detection, there was in rare cases a wrong detection where a SymDirectory was treated as an SymFile.
(F) The "Create New Textfile" action. (Android)
10.12.2019 [1.9.46.0]
(F) An ArgumentNullException which was raised during "mount" parsing. (On the "device" view.)
(F) The renaming issue, where you got, "The element couldn't be renamed!", if the name hasn't changed.
(A) Windows shortcuts to the TreeView of the Windows explorer. (Even the original one hasn't that feature )
(A) Hiding the ".lnk" extension on any Windows shortcut.
(A) Internal auto updates to the remote explorers (Android/FTP). So you have a kind of "pseudo" FileSystemWatcher.
(A) The re-sorting of the items after an rename action.
(D) Some code duplication. (Saved all together ~12 kb)
(R) Unnecessary refreshes and replaced them with internal cache logic's.
02.12.2019 [1.8.46.0]
(F) An ObjectDisposedException which was sometimes raised after symlink parsing and/or file transfers.
(C) The channeling on the ADBSocket, from an ConcurrentDictionary to an simple array with locks, this increased the transfer speed.
(U) The dlls to the latest versions.
24.07.2019 [1.7.46.0]
(R) The config files, both, the config.xml and the config.ftp.xml got an structure update. The old/current config files will be migrated to the latest version. So there should be no data loss in any way.
(A) A version banner to the Android and FTP view
(C) The adb directory from "ADB-Overlay\adb" to "ADB-Overlay\platform-tools"
(A) The SDK-Updater
(A) Auto-SDK-Update - If activated, this will check once every 24h for an update, but only on startup of the ADB-Overlay. (NO Tasks or something)
Info
The updater will only check "https://dl.google.com/android/repository/repository-11.xml". This XML gets downloaded and parsed, if the "platform-tools" version is newer as the used one, you'll get an popup which offers the download for the latest version.
The Auto-SDK-Update is by default disabled.
28.06.2019 [1.6.46.0]
(F) A memory leak which occurred by removing a device (Android View -> Closing an tab)
(F) A memory leak which occurred by removing a server (FTP View -> Closing an tab)
(R) Improved the directory parsing speed
(A) A progress bar to the copy window (green during transfer and on completion | red on failure or cancellation)
04.06.2019 [1.5.46.0]
(C) The versioning:
1 = Major
5 = Minor
46 = Framework Version (4.6)
0 = Hotfix
(A) A few speed improvements to the Remote-Desktop.
(A) The updater/-menu
(A) Auto-Update - If activated, this will check once every 24h for an update, but only on startup of the ADB-Overlay. (NO Tasks or something)
Info
The updater will only check my FTP for a ".version" file. This gets downloaded and parsed, if the version is newer as the used one, you'll get an popup which offers the download for the latest version. (NO logs and NO telemetry!)
The Auto-Update is by default disabled.
28.05.2019 [0.0.0.5]
(A) The "APK Manager" to the Android -> Tools menu
(A) {<-} & {->} buttons to the addressbar
(A) The "Install" option to the remote explorer -> ListViewItem context menu (only shown if the item is a apk)
(R) Added the missing options to the APK Installer (e.g. Downgrade, Test-Package, etc.)
(R) Optimized the "symlink" parsing
01.05.2019 [0.0.0.4]
(F) An exception which was raised after you tried to open any "Tool" on an disconnected device.
(A) A Battery Monitor to the Android -> Tools menu
29.04.2019 [0.0.0.3]
(A) Remote-Viewer when booted in the recovery
(A) A screenshot format selector (bmp | gif | jpg | png | tiff | wmp) to the Remote-Desktop
(A) A color correction switch to the Remote-Desktop
(A) Links to the German forum post
20.04.2019 [0.0.0.2]
(F) An issue during item renaming - Reason was maybe the switch from .NET 4 to .NET 4.6, seems the UI updates on textboxes are no longer only on focus got/lost, instead they are now after any change.
(A) Contextmenu (Listview) -> New -> Text Document
(A) Replacements for "New Directory", "Group (New)", "Server (New)" to the german language, so you get now after such an action the correct "Neuer Ordner", "Neue Gruppe", "Neuer Server".
(C) The FTP Copy/Delete action, you can now close the control connection and leave only those windows open until they are done. Both, the Copy and Delete action using now their own connection which is no longer bound to the control connection.
(C) Moved the "Keep Alive" checkbox (FTP -> Servermanager -> Account) to FTP -> Servermanager -> Connection
13.04.2019 [0.0.0.1]
Initial release
Great job. my huawei mate 10 lite is recognized. currently my smartphone is on rom original stock rne - l21c432b340 emui 8.0 not rooted. and my PC is a windows 7 64.
Works for my Xperia X - and thanks for your help!
I'm flattered to be in your contacts screenshot I was still using your prototype you had sent to me years ago!
Works very well on my Pixel 4!
squabbi said:
I'm flattered to be in your contacts screenshot I was still using your prototype you had sent to me years ago!
Works very well on my Pixel 4!
Click to expand...
Click to collapse
Hey Bro
long time not seen. Hehe yeah the good old Multi-Explorer ;p - Still using it my self, it's more or less my playground before i implement things in this tool.
If you want and have some spare time we can modify this beauty. I also reworked nearly the whole AndroidCtrl.dll, there you have now solid filestreams, strongly typed FilesystemInfos (Like the one from the .NET fw) and lots of other handy stuff. Like framebuffer access in Android and recovery mode. I also implemented a ADBridge class which is an instanced wrapper for the 2 static ADB classes (binary/socket).
Best Regards,
Sebastian
this is what im looking for a while
Thank you very much
here is some suggestion
1.better ui
2.edit build prop in the realtime
btw my phone is Huawei P9(eva-al10) rooted android 8.0 work very well
k1ll3r8e said:
Hey Bro
long time not seen. Hehe yeah the good old Multi-Explorer ;p - Still using it my self, it's more or less my playground before i implement things in this tool.
If you want and have some spare time we can modify this beauty. I also reworked nearly the whole AndroidCtrl.dll, there you have now solid filestreams, strongly typed FilesystemInfos (Like the one from the .NET fw) and lots of other handy stuff. Like framebuffer access in Android and recovery mode. I also implemented a ADBridge class which is an instanced wrapper for the 2 static ADB classes (binary/socket).
Best Regards,
Sebastian
Click to expand...
Click to collapse
Sounds great! I'm looking to get back into toolkit making later this year, I'm keen to see the improvments to your library! :good:
Great job. we can navigate and copy files efficiently.
Only one thing is missing. Why not keep file timestamp for last access and modifie dates? or let us choose the option to keep it or not.
skyrail01 said:
Great job. we can navigate and copy files efficiently.
Only one thing is missing. Why not keep file timestamp for last access and modifie dates? or let us choose the option to keep it or not.
Click to expand...
Click to collapse
Heyho,
which Android version are you using and on which action (pull/push) does the timestamps get lost?
Normally i preserve the timestamps but on some Android versions the "timestamp" field in the ADB-Protocol is ignored.
Maybe i can set the timestamps on an other way, but therefore i need to know the version.
Regards,
Sebastian
PS:
Some code where i set the timestamps
Upload
Code:
public void Close(DateTime fileCreationTime)
{
if (_ch?.IsConnected ?? false)
{
if (CanWrite)
{
int o = 0, w;
byte[] d = new byte[8];
d.SetUInt32LE((UInt32)SyncCmd.DONE, 0);
d.SetUInt32LE(ToUnixTime(fileCreationTime), 4);
//...
}
_ch.Close();
}
}
Download
Code:
//...
using (FileStream dfs = destination.Open(FileMode.Create, FileAccess.Write))
{
using (AFileStream sfs = OpenRead())
{
sfs.CopyTo(dfs, DMAX, msg, cancellationToken);
ct = sfs.CreationTime;
}
}
//...
if (msg.State == TransferState.Done)
{
destination.CreationTime = ct;
transferEventHandler?.Invoke(Client.ID, new FileTransferEventArgs(Client.ID, msg));
return true;
}
//...
Thank you really great program keep it up
Hey,
I am operating under lineageOS 16 on Galaxy S5 (klte), using adb 1.0.39 on windows 10 64-bits, either via wifi or usb connect.
I check file dates under Windows, in console mode with far manager (M: last write time, C: creation time, A: last access time).
I am using linux command ls -l under adb shell from Windows command line to list files pushed to Android.
When pushing files from Windows to Android, only M is preserved, with a 2 hours offset (ES file explorer tells it is modified date) Maybe daylight issue or bad timezone.
When pulling files from Android, only C is preserved
When I pull back to Windows, files pushed to Android, all original date is lost.
But I am pretty sure we can preserve last access, modified and creation date as I could see Adbexplorer (another project) pull files keeping M and A (adb pull -a).
Hope I give you enough details.
k1ll3r8e said:
Heyho,
which Android version are you using and on which action (pull/push) does the timestamps get lost?
Normally i preserve the timestamps but on some Android versions the "timestamp" field in the ADB-Protocol is ignored.
Maybe i can set the timestamps on an other way, but therefore i need to know the version.
Regards,
Sebastian
PS:
Some code where i set the timestamps
Upload
Code:
public void Close(DateTime fileCreationTime)
{
if (_ch?.IsConnected ?? false)
{
if (CanWrite)
{
int o = 0, w;
byte[] d = new byte[8];
d.SetUInt32LE((UInt32)SyncCmd.DONE, 0);
d.SetUInt32LE(ToUnixTime(fileCreationTime), 4);
//...
}
_ch.Close();
}
}
Download
Code:
//...
using (FileStream dfs = destination.Open(FileMode.Create, FileAccess.Write))
{
using (AFileStream sfs = OpenRead())
{
sfs.CopyTo(dfs, DMAX, msg, cancellationToken);
ct = sfs.CreationTime;
}
}
//...
if (msg.State == TransferState.Done)
{
destination.CreationTime = ct;
transferEventHandler?.Invoke(Client.ID, new FileTransferEventArgs(Client.ID, msg));
return true;
}
//...
Click to expand...
Click to collapse
skyrail01 said:
Hey,
I am operating under lineageOS 16 on Galaxy S5 (klte), using adb 1.0.39 on windows 10 64-bits, either via wifi or usb connect.
I check file dates under Windows, in console mode with far manager (M: last write time, C: creation time, A: last access time).
I am using linux command ls -l under adb shell from Windows command line to list files pushed to Android.
When pushing files from Windows to Android, only M is preserved, with a 2 hours offset (ES file explorer tells it is modified date) Maybe daylight issue or bad timezone.
When pulling files from Android, only C is preserved
When I pull back to Windows, files pushed to Android, all original date is lost.
But I am pretty sure we can preserve last access, modified and creation date as I could see Adbexplorer (another project) pull files keeping M and A (adb pull -a).
Hope I give you enough details.
Click to expand...
Click to collapse
Heyho,
THX for that info, i'll check the "adbd" source which LOS uses, maybe there is the prob. According to "adb pull -a" i'll also have a look at the adb source, because i think they do some "touch" stuff. Because the ADB-Protocol it self only supports creation/last modified time. In the source is a another "struct" for "STA2" (stat 2) command. But i have never seen a adb binary which supports this. (All binaries use the "STAT" command.)
EDIT 1:
Just checked the adb source again, seems they changed it a bit...
(This is the current STAT (v1) header)
Code:
# cmd name STAT or STA2 // 4 bytes
st->st_mode = msg.stat_v1.mode; // 4 bytes
st->st_size = msg.stat_v1.size; // 4 bytes
st->st_ctime = msg.stat_v1.mtime; // 4 bytes
st->st_mtime = msg.stat_v1.mtime; // 4 bytes
My HTC-One M9, Sensation, VM-Ware (Kitkat - Nougat) none of them has a 20 byte header. ALL of them return a 16 byte header.
Code:
CMD // 4 bytes
Mode // 4 bytes
Size // 4 bytes
CTime // 4 bytes
So it seems the protocol is highly inconsistent... I'll check how much time gets lost by calling touch on each file, because, currently i open a sync channel via an smart-socket, transfer the file and read all data provided by the protocol header. This is really fast, but if i have to spin up each time another channel to get a shell for the touch, this will increase the time each copy needs. Because, a shell depending on the version (v1, v2), has a lot checks you need to perform, specially the shell_v2 because it's like a ssh protocol.
EDIT 2:
Just for completeness, i'm pretty sure your device also sends only a 16 byte header for the stat v1 command, because:
(This is a cut of my implemented "Stat(byte[] bytes)" class)
Code:
if (c == (uint)SyncCmd.STA2 && bytes.Length >= 72)
{
ID = SyncCmd.STA2;
Error = bytes.GetUInt32LE(4);
Dev = bytes.GetUInt64LE(8);
INode = bytes.GetUInt64LE(16);
Mode = bytes.GetUInt32LE(24);
NLink = bytes.GetUInt32LE(28);
UID = bytes.GetUInt32LE(32);
GID = bytes.GetUInt32LE(36);
Size = bytes.GetUInt64LE(40);
ATime = bytes.GetInt64LE(48);
MTime = bytes.GetInt64LE(56);
CTime = bytes.GetInt64LE(64);
}
else if (c == (uint)SyncCmd.STAT && bytes.Length == 16)
{
ID = SyncCmd.STAT;
Mode = bytes.GetUInt32LE(4);
Size = bytes.GetUInt32LE(8);
CTime = bytes.GetUInt32LE(12);
}
As you can see, the both structures differ in there field order, if your device would send a 20 byte header, the test (bytes.Length == 16) wouldn't match. And you couldn't download a file.
EDIT 3:
After playing a while with "stat" and "touch" on some Android versions, i decided to rely on those functions. The next build should restore and write the correct timestamps.
EDIT 4:
Well, setting timestamps on the SD-Card doesn't work, also, setting timestamps on the "internal" SD-Card doesn't work either. Seems that it's related to the underlying FS. If i try to set the timestamp on an ext4 partition, it works. So it doesn't make sense to rewrite the push/pull functions because the return of touch for 99% of the time will be "touch: '/sdcard/TWRP/test.pdf': Operation not permitted". So it's simply a time waste during the copy procedure. BUT, i'll implement it at least for the download, so u'll get the correct timestamps on Windows.
EDIT 5:
Added a screenshot of the new "Properties Window" which also proves that the download timestamps are now correct.
(Btw. C doesn't mean created - it means changed)
Code:
stat /sdcard
File: `/sdcard' -> `/storage/self/primary'
Size: 21 Blocks: 0 IO Blocks: 512 symbolic link
Device: 1h/1d Inode: 4432 Links: 1
Access: (777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 1970-01-01 01:00:00.000000000
Modify: 1970-01-01 01:00:00.000000000
Change: 1970-01-01 01:00:00.360063176
Little update about the "creation time". After a bit research i found this post on Stack Exchange, there is explained that the so called "birth time" is stored since ext4 as part of the INode field. But it seems you need a special version of "stat" to read this info, it's called "statx". But so far i could see, Android doesn't support this feature, maybe some kernel does but it seems that it's more the rare case.
Regards,
Sebastian
Thanks for the update!
I was wondering what could be causing a small delay in copying files over, once the progress finishes, the transfer dialog remains frozen for a 1-2 seconds. I'm copying over a photo, so around 2MB.
squabbi said:
Thanks for the update!
I was wondering what could be causing a small delay in copying files over, once the progress finishes, the transfer dialog remains frozen for a 1-2 seconds. I'm copying over a photo, so around 2MB.
Click to expand...
Click to collapse
Heyho ,
yup i still working on it. It seems that the "Task.Delay()" isn't performed inside the Task itself, instead it's executed on the main thread. The reason for the freeze is, that i try to show the last result, otherwise the copy window would close immediately after the last element and you couldn't see if it's transferred or not. So i keep it like windows, wait 1,5-2,5 sec before closing the window.
The delay you might feel extremely is the "Media-Scanner". It runs on the end of each copy/delete action, the reason for this is, that files pushed/copied by adb are not reported to the MTP interface. So you couldn't see those files if you connect your device after such an adb copy via MTP. Also files/folders deleted by adb are also not reported to the MTP interface. So you will see those elements via MTP if you don't perform manually the "Media-Scanner" lookup. - But if you work only with adb for example, you could turn the "Media-Scanner" off. All device based explorers and of course adb will see those files/folders at any times. (But if you need those files/folders for exchange you should keep the "Media-Scanner" on )
EDIT:
This is executed for every file which is copied/pushed/deleted.
Code:
_adb.Device.Manager.ActivityManager.Broadcast("android.intent.action.MEDIA_SCANNER_SCAN_FILE", "-a", string.Concat("-d 'file://", remotePath, "' > /dev/null"));
EDIT 2 (a bit off-topic):
You could also simply use the "Media-Scanner" with my AndroidCtrl.dll. The calls are:
Code:
//"_adb" is a instance of "ADBClient"
_adb.Device.IO.MediaScanner.CreateScanList(string remoteDirectory, MediaScanMode mode);
_adb.Device.IO.MediaScanner.CreateScanList(string remoteDirectory, MediaScanMode mode, CancellationToken cancellationToken);
_adb.Device.IO.MediaScanner.CreateScanList(string remoteDirectory, IList<string> files, MediaScanMode mode, CancellationToken cancellationToken);
_adb.Device.IO.MediaScanner.ScanDirectory(string remotePath, MediaScanMode mode);
_adb.Device.IO.MediaScanner.ScanDirectory(string remotePath, MediaScanMode mode, CancellationToken cancellationToken);
_adb.Device.IO.MediaScanner.ScanDirectory(IEnumerable<string> remotePaths, MediaScanMode mode);
_adb.Device.IO.MediaScanner.ScanDirectory(IEnumerable<string> remotePaths, MediaScanMode mode, CancellationToken cancellationToken);
_adb.Device.IO.MediaScanner.ScanFile(string remotePath, MediaScanMode mode);
_adb.Device.IO.MediaScanner.ScanFile(IEnumerable<string> remotePaths, MediaScanMode mode);
_adb.Device.IO.MediaScanner.ScanFile(IEnumerable<string> remotePaths, MediaScanMode mode, CancellationToken cancellationToken);
_adb.Device.IO.MediaScanner.ScanObject(ITransferMessage message, MediaScanMode mode);
EDIT 3:
Found the bad boy, seems "Task.Delay()" only works when used in "async" context. Now the "freeze" is gone, you can move the window until it vanishes. So, in the next update those "freezes" are gone.
---
Little Update:
@squabbi
The next update includes a little editor as suggested by @reynard1. A screenshot can be found as attachment.
Regards,
Sebastian
k1ll3r8e said:
**snip**
EDIT 3:
Found the bad boy, seems "Task.Delay()" only works when used in "async" context. Now the "freeze" is gone, you can move the window until it vanishes. So, in the next update those "freezes" are gone.
---
Little Update:
@squabbi
The next update includes a little editor as suggested by @reynard1. A screenshot can be found as attachment.
Regards,
Sebastian
Click to expand...
Click to collapse
Woohoo! Thanks for digging into it! I'm glad you found the culprit haha.
Looking forward to that editor feature! Do you know if it's possible to integrate with Windows Explorer? It's probably a little harder, but something like how WinSCP can drag files from the remote to a local Explorer window.
If that's a little difficult, would this be possible to implement? If I drag and drop a folder/file onto the local pane, it will change directory (and highlight the file if a file was dragged onto the local pane). Just to make it easier to work with folders I have already open.
Still using Windows 7?
squabbi said:
Woohoo! Thanks for digging into it! I'm glad you found the culprit haha.
Looking forward to that editor feature! Do you know if it's possible to integrate with Windows Explorer? It's probably a little harder, but something like how WinSCP can drag files from the remote to a local Explorer window.
If that's a little difficult, would this be possible to implement? If I drag and drop a folder/file onto the local pane, it will change directory (and highlight the file if a file was dragged onto the local pane). Just to make it easier to work with folders I have already open.
Still using Windows 7?
Click to expand...
Click to collapse
Heyho
Yes its definatly possible, we need to use the so called "VirtualFileDataObject". I tried to implement it some time ago, but doesn't worked as expected. But i'll give it another try.
-
Yup, i still use Win 7 as my main system, but i have some VMs running, like my Debian server which serves the documentation and some test sites for my php projects, a few Android x86 Versions and of course a legit Win10 installation to test If everything works.
*Never change a running system! - Currently my main hdd has a uptime of 2689 days with 216 restarts, i think that tells a lot *
---
Little Update:
As the screenshot shows, the editor is working fine so far. (Added also a few more controls.) The only problem i still have is, that if ADB doesn't run as root you can't edit for example the "build.prop". Because ADB can't write the file directly back, so i need to build a kind of "tmp" file. The next problem will be, that you (the user) have to remount the mount point, before you start editing those "root" and "write protected" files. There is also a problem with "binary" files, because the "RichTextBox" screws up when it gets "binary to ASCII/UTF8" transformed data, which ends in an app freeze... So i have to check on some way if the stream contains really text-data, the file extension doesn't help here much because, you know, linux uses also a lot of txt files without any extension.
Update 2:
Just got the "binary" files running... With a super BIG drawback, 248 kb (4069 rows) text results in 269,364 mb memory utilization by the "RichTextBox". - The prob here is, that the ADB filestream doesn't support seek, so i need to load the whole doc in one, which is quiet to much for the "RichTextBox"...
Update 3:
Soo, i wrote a kind of paging for the "RichTextBox" which works so far really nice, at least when it comes to the memory (even during scrolling, with free running wheel, only 15 - 27 mb increase), there is now a fixed amount of rows (40) which will be shown, all other rows are hidden from the "RichTextBox". This opens a few new issues^^ - Currently there is no selection possible which goes beyond the 40 rows. Also insert and delete are a little challenge because, i need to "overwrite" the default behavior with the some "PreviewKeyDown/etc." events... - Looks all a bit hacky, but lets see if it works in the end.
Update 4:
Well, the "RichTextBox" is out of the race^^ - It triggers events more or less random instead when you expect it, it removes blank lines (for example you have 3x "\n", this gets wrapped to 1x "\n") and the best, you remove "\r" during stream reading and the RTB adds it again, also random (some paragraphs get an "\r" some not). Editing text in a solid way without losing something isn't possible with this thing... So i'll try the "TextBox".
Last Update before release:
So, after testing the "RichTextBox" and "TextBox" i ask myself why those controls are there^^. Both can't edit text with more than a few hundert lines, the "TextBox" is at least much better as the "RichTextBox" but it also screws up when i comes to more as 250 kb text. So the "Editor" will be one of your installed applications. I add a little tool window, which offers the temporary download to the windows temp folder, after that i launch the windows "OpenAs" dialog that you can choose the editor you want. Also, i'll attach a "FileSystemWatcher" to the file that the upload automatically happens when you press save in your editor.
Little Info:
It take a few more days for the "edit" update, because i started also to implement the TAP pattern, this increased for example the download speed by factor 6. But to implement it the right way, i have to rewrite a lot of code in the AndroidCtrl.dll and AndroidCtrlUI.dll.
Regards,
Sebastian
k1ll3r8e said:
Heyho
Yes its definatly possible, we need to use the so called "VirtualFileDataObject". I tried to implement it some time ago, but doesn't worked as expected. But i'll give it another try.
-
Yup, i still use Win 7 as my main system, but i have some VMs running, like my Debian server which serves the documentation and some test sites for my php projects, a few Android x86 Versions and of course a legit Win10 installation to test If everything works.
*Never change a running system! - Currently my main hdd has a uptime of 2689 days with 216 restarts, i think that tells a lot *
** snip **
Click to expand...
Click to collapse
That'll be great to see haha, and that does make sense keeping your system as is, if it works, it works.
Thanks for your hard work in checking out what's best for the new edit function. Maybe there's a library out there that can implement a text viewer better? I'm not familiar with WPF libraries, or how many there are.
squabbi said:
That'll be great to see haha, and that does make sense keeping your system as is, if it works, it works.
Thanks for your hard work in checking out what's best for the new edit function. Maybe there's a library out there that can implement a text viewer better? I'm not familiar with WPF libraries, or how many there are.
Click to expand...
Click to collapse
Heyho,
i have had a look on Avalon Texteditor but on StackOverflow is also a discussion about how to open a file bigger than 20 mb. It seems WPF is not that great for such things. I found also another one, written by a lonely dev like me , but it's not maintained since 7 years. So the best way might be, open a installed App which is well designed for that purpose.
A bit off-topic
I nearly finished the TAP implementation for the AndroidCtrl.dll, so far it brought a great speed increase. Also, it consumes less CPU time, for example the remote desktop uses only 3-7% on an Intel I5 with 32 GB memory (but up to 36% on an single-core Intel Pentium M with 1,5 Ghz and 1 GB memory - my old well working Laptop, also with Win7 ). So you might be happy to see all the new "real async" overloads in the lib. (I implemented all from scratch, so there is NO Task.Run() or Task.StartNew() in those functions.)
Edit:
Soo, after a few horrible days, the TAP pattern is now fully integrated! But there is still a little issue with the Remote-Desktop recovery viewer. It seems that everything got a speed boost except the recovery viewer, the viewer is currently nearly 4x slower as before... After i fixed this last problem, i'll release the new asynchronous version.
Regards,
Sebastian

Categories

Resources